在TabLayout/ViewPager Android中重新绘制选项卡内容

在TabLayout/ViewPager Android中重新绘制选项卡内容,android,android-viewpager,invalidation,redraw,android-tablayout,Android,Android Viewpager,Invalidation,Redraw,Android Tablayout,我的应用程序有一个TabLayout设置,带有一个ViewPager。共有4个选项卡。当设置更改时,所有4个选项卡及其内部片段都需要重新绘制,因为其中有大量数据更改。在切换到不同的选项卡几次后,它确实会随着我当前的代码而改变。但它并不像它应该的那样是瞬间的 我想知道是否有一种方法可以立即重新绘制/使片段失效 我试过: 重新设置适配器/ViewPager 使ViewPager无效 重置每个选项卡的customView 似乎什么都不管用。我相信我错过了什么,或者是想错了。如果有任何帮助或建议能帮

我的应用程序有一个TabLayout设置,带有一个ViewPager。共有4个选项卡。当设置更改时,所有4个选项卡及其内部片段都需要重新绘制,因为其中有大量数据更改。在切换到不同的选项卡几次后,它确实会随着我当前的代码而改变。但它并不像它应该的那样是瞬间的

我想知道是否有一种方法可以立即重新绘制/使片段失效

我试过:

  • 重新设置适配器/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