在TabLayout/ViewPager Android中重新绘制选项卡内容
我的应用程序有一个TabLayout设置,带有一个ViewPager。共有4个选项卡。当设置更改时,所有4个选项卡及其内部片段都需要重新绘制,因为其中有大量数据更改。在切换到不同的选项卡几次后,它确实会随着我当前的代码而改变。但它并不像它应该的那样是瞬间的 我想知道是否有一种方法可以立即重新绘制/使片段失效 我试过:在TabLayout/ViewPager Android中重新绘制选项卡内容,android,android-viewpager,invalidation,redraw,android-tablayout,Android,Android Viewpager,Invalidation,Redraw,Android Tablayout,我的应用程序有一个TabLayout设置,带有一个ViewPager。共有4个选项卡。当设置更改时,所有4个选项卡及其内部片段都需要重新绘制,因为其中有大量数据更改。在切换到不同的选项卡几次后,它确实会随着我当前的代码而改变。但它并不像它应该的那样是瞬间的 我想知道是否有一种方法可以立即重新绘制/使片段失效 我试过: 重新设置适配器/ViewPager 使ViewPager无效 重置每个选项卡的customView 似乎什么都不管用。我相信我错过了什么,或者是想错了。如果有任何帮助或建议能帮
- 重新设置适配器/ViewPager
- 使ViewPager无效
- 重置每个选项卡的customView
// inside onCreate method
adapter = new SectionPagerAdapter(getActivity().getSupportFragmentManager());
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
for (int i = 0; i < tabLayout.getTabCount(); i++) {
View view = inflater.inflate(R.layout.custom_tab, tabLayout, false);
ImageView imageView = (ImageView)view.findViewById(R.id.tab_image);
imageView.setImageDrawable(getResources().getDrawable(imageResId[i]));
TabLayout.Tab tab = tabLayout.getTabAt(i);
tab.setCustomView(view);
}
tabLayout.getTabAt(2).select();
// internal class
public class SectionPagerAdapter extends FragmentStatePagerAdapter {
public SectionPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
Log.d("Position", position + "");
switch (position) {
case 0:
return tab;
case 1:
return tab1;
case 2:
default:
return tab2;
case 3:
return tab3;
}
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.setTag(position);
return super.instantiateItem(container, position);
}
@Override
public int getCount() {
return 4;
}
@Override
public CharSequence getPageTitle(int position) {
Drawable image = getContext().getResources().getDrawable(imageResId[position]);
image.setBounds(0, 0, image.getIntrinsicWidth(), image.getIntrinsicHeight());
SpannableString sb = new SpannableString(" ");
ImageSpan imageSpan = new ImageSpan(image, ImageSpan.ALIGN_BOTTOM);
sb.setSpan(imageSpan, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
return sb;
}
}
//内部onCreate方法
适配器=新的SectionPagerAdapter(getActivity().getSupportFragmentManager());
viewPager.setAdapter(适配器);
tabLayout.setupWithViewPager(viewPager);
for(int i=0;i