hackware1993 / MagicIndicator

A powerful, customizable and extensible ViewPager indicator framework. As the best alternative of ViewPagerIndicator, TabLayout and PagerSlidingTabStrip —— 强大、可定制、易扩展的 ViewPager 指示器框架。是ViewPagerIndicator、TabLayout、PagerSlidingTabStrip的最佳替代品。支持角标,更支持在非ViewPager场景下使用(使用hide()、show()切换Fragment或使用setVisibility切换FrameLayout里的View等),http://www.jianshu.com/p/f3022211821c
9.68k stars 1.54k forks source link

多次刷新后,会出现Tab文字不显示的bug! #268

Closed liuwen370494581 closed 2 years ago

liuwen370494581 commented 3 years ago
public void setNavigator(IPagerNavigator navigator) {
    if (mNavigator == navigator) {
        return;
    }
    if (mNavigator != null) {
        mNavigator.onDetachFromMagicIndicator();
    }
    mNavigator = navigator;
    removeAllViews();
    if (mNavigator instanceof View) {
        LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
        addView((View) mNavigator, lp);
        mNavigator.onAttachToMagicIndicator();
    }
}

根据debug 多次调用这个方法后 必出现文字不显示的bug!如果吧 removeAllViews(); 这个方法注释 则不会 不知道哪里出了问题

liuwen370494581 commented 3 years ago

因为是做了下拉刷新,所以会多次调用setNavigator()这个方法,麻烦有知道的朋友解决一下 谢谢了

   TabFragmentAdapter mTabFragmentAdapter = new TabFragmentAdapter(getChildFragmentManager(), roomDevice);
    mViewPager.setAdapter(mTabFragmentAdapter);
    final FragmentContainerHelper mFragmentContainerHelper = new FragmentContainerHelper();
    commonNavigator7 = new CommonNavigator(getContext());
    commonNavigator7.setScrollPivotX(0.65f);
    commonNavigator7.setAdapter(new CommonNavigatorAdapter() {
        @Override
        public int getCount() {
            return mTitles.size();
        }

        @Override
        public IPagerTitleView getTitleView(Context context, final int index) {
            SimplePagerTitleView simplePagerTitleView = new ColorFlipPagerTitleView(context);
            simplePagerTitleView.setText(mTitles.get(index));
            simplePagerTitleView.setNormalColor(Color.GRAY);
            simplePagerTitleView.setSelectedColor(Color.BLACK);
            simplePagerTitleView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    mFragmentContainerHelper.handlePageSelected(index);
                    mViewPager.setCurrentItem(index);
                }
            });
            return simplePagerTitleView;
        }

        @Override
        public IPagerIndicator getIndicator(Context context) {
            LinePagerIndicator indicator = new LinePagerIndicator(context);
            indicator.setMode(LinePagerIndicator.MODE_EXACTLY);
            indicator.setLineHeight(UIUtil.dip2px(context, 4));
            indicator.setLineWidth(UIUtil.dip2px(context, 25));
            indicator.setRoundRadius(UIUtil.dip2px(context, 3));
            indicator.setStartInterpolator(new AccelerateInterpolator());
            indicator.setEndInterpolator(new DecelerateInterpolator(2.0f));
            indicator.setColors(Color.parseColor("#00c853"));
            return indicator;
        }
    });
    mMagicIndicator.setNavigator(commonNavigator7);
    mFragmentContainerHelper.attachMagicIndicator(mMagicIndicator);
    ViewPagerHelper.bind(mMagicIndicator, mViewPager);