and*_*dro 7 android android-design-library android-tablayout
我正在将tablayout设置为我的viewpager.但是当我使用notifyDataSetChanged然后它删除我的自定义视图并显示默认标题视图我的代码
ViewPager viewPager = findView(R.id.view_pager);
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager(), getResources(), getFragments());
viewPager.setAdapter(adapter);
tabs.setupWithViewPager(viewPager);
for (int i = 0; i < tabs.getTabCount(); i++) {
TabLayout.Tab tab = tabs.getTabAt(i);
tab.setCustomView(getTabView(i));
}
t.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
adapter.notifyDataSetChanged();
}
});
public View getTabView(int position) {
View v = LayoutInflater.from(this).inflate(R.layout.pager_tab, null);
RelativeLayout linearLayout = (RelativeLayout) v.findViewById(R.id.view);
return v;
}
Run Code Online (Sandbox Code Playgroud)
所以它工作正常,但当我调用adapter.notifyDataSetChanged(); 然后我的tablayout没有显示我已经添加了prevview的customview.它只显示默认标题..如果我使用编译"com.android.support:design:23.1.1",这个相同的代码工作正常
但如果我将此更改为更新的版本,这是行不通请请任何人帮助我我尝试这个但是havnt得到ans或任何其他替代的lib或方法,我可以在标签视图中添加customView
我想我找到了一种解决方案:监听布局更改,如果 customView 为 null,则再次设置:
viewPager.addOnLayoutChangeListener(new ViewPager.OnLayoutChangeListener() {
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
for (int i = 0; i < tabLayout.getTabCount(); i++) {
if (tabLayout.getTabAt(i).getCustomView() == null) {
tabLayout.getTabAt(i).setCustomView(tabs[i]);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)