【问题标题】:View pager's tab layout text is not updating查看寻呼机的选项卡布局文本未更新
【发布时间】:2017-02-23 05:14:08
【问题描述】:

Screen shot of Tab where text color remains highlighted 我正在使用 android 视图寻呼机和选项卡布局。在选项卡布局的 xml 中,我使用此代码设置选项卡布局

        `<android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:tabMode="fixed"
        app:tabBackground="@color/LightGrey"
        app:tabIndicatorColor="@color/app_highlight_color"
        app:tabIndicatorHeight="3dp"
        app:tabTextAppearance="@style/MyCustomTextAppearance"
        app:tabSelectedTextColor="@color/app_highlight_color"
        app:tabGravity="fill"/>`

问题是当我通过向左/向右滑动来更改 viewpager 的页面/片段时,它工作正常并将标签的文本颜色从正常更改为突出显示,反之亦然。

但是当我单击任何选项卡以更改片段时,片段会更改,但选项卡的文本仍保持选中状态。当用户触摸另一个选项卡时,它应该被取消选中。这是我设置的选项卡布局 java 函数

    private void setupTabLayout() {
tabLayout.setTabTextColors(R.color.LightGrey,R.color.app_highlight_color);
    tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {


            //tab.setCustomView(R.drawable.tab_trending_selected);
            switch (tab.getPosition()) {
                case AppConstants.TRENDING_INDEX:
                    tab.setIcon(R.drawable.tab_trending_selected);
                    tab.select();

                    break;
                case AppConstants.DUB_INDEX:
                    tab.setIcon(R.drawable.tab_dub_selected);
                    tab.select();
                    break;
                case AppConstants.PROFILE_INDEX:
                    tab.setIcon(R.drawable.tab_profile_selected);
                    tab.select();
                    break;
                default:
                    break;
            }
        }

        @Override
        public void onTabUnselected(TabLayout.Tab tab) {

            switch (tab.getPosition()) {
                case AppConstants.TRENDING_INDEX:
                    tab.setIcon(R.drawable.tab_trending_unselected);
                    //tab.setText("Trending");

                    break;
                case AppConstants.DUB_INDEX:
                    tab.setIcon(R.drawable.tab_dub_unselected);
                   // tab.setText("Dub");
                    break;
                case AppConstants.PROFILE_INDEX:
                    tab.setIcon(R.drawable.tab_profile_unselected);
                   // tab.setText("Profile");
                    break;
                default:
                    break;
            }

        }

        @Override
        public void onTabReselected(TabLayout.Tab tab) {

        }
    });
    tabLayout.setTabTextColors(getResources().getColor(R.color.Gray),     getResources().getColor(R.color.app_highlight_color));
    tabLayout.getTabAt(AppConstants.TRENDING_INDEX).setIcon(R.drawable.tab_trending_selected);
    tabLayout.getTabAt(AppConstants.DUB_INDEX).setIcon(R.drawable.tab_dub_unselected);
    tabLayout.getTabAt(AppConstants.PROFILE_INDEX).setIcon(R.drawable.tab_profile_unselected);

    tabLayout.getTabAt(AppConstants.TRENDING_INDEX).select();


}

【问题讨论】:

  • 添加tabLayout.getTabAt(position).select();
  • 当我通过点击tablayout中的任何选项卡来更改页面时,选项卡文本颜色没有改变
  • 删除“tabLayout.setTabTextColors(R.color.LightGrey,R.color.app_highlight_color);”这条线并检查
  • 没有进展。还是同样的问题。我也在问题中添加了问题的屏幕截图。 @ak sacha

标签: android android-fragments tabs android-viewpager android-tablayout


【解决方案1】:

试试这个:

viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
    @Override
    public void onPageSelected(int pos) {
// set the title
        ab.setSelectedNavigationItem(pos);
        ab.setTitle(titles[pos]);
    }

    @Override
    public void onPageScrolled(int arg0, float arg1, int arg2) {

    }

    @Override
    public void onPageScrollStateChanged(int arg0) {

    }
});

【讨论】:

    【解决方案2】:

    面临独特的问题。当我们设置 setCurrentItem。它不会更改 tablayout 的选项卡。然后,您必须在 viewpager 上添加 OnPageChangeListener,您必须在其中手动选择 tablayout 的选项卡以获取所选 viewpager 的位置。然后 setupWithViewPager.

    在您的 viewPage 中添加此代码,这对我有用。

    viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            }
    
            @Override
            public void onPageSelected(int position) {
    
                tabLayout.getTabAt(position).select();
            }
    
            @Override
            public void onPageScrollStateChanged(int state) {
            }
        });
    
        /*
          NOTE: This is setup after addOnPageChangeListener. Don't know why but this is what works. Otherwise tabLayout.does not select.
        */
        tabLayout.setupWithViewPager(this.viewPager);
    

    【讨论】:

    • 当我通过点击tablayout中的任何选项卡来更改页面时,选项卡文本颜色没有改变
    【解决方案3】:

    使用类似的东西。

    <style name="CustomTabLayout" parent="Widget.Design.TabLayout">
        <item name="tabIndicatorColor">@color/colorAccent</item>
        <item name="tabSelectedTextColor">@color/colorAccent</item>
        <item name="tabTextAppearance">@style/CategoryTabTextAppearance</item>
        <item name="tabBackground">@color/colorPrimary</item>
    </style>
    
    <style name="CategoryTabTextAppearance" parent="TextAppearance.Design.Tab">
        <item name="android:textColor">@color/secondaryText</item>
    </style>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-27
      相关资源
      最近更新 更多