繁体   English   中英

如何移动指示符的标签文本颜色?

[英]how to move tab text color like indicator?

我有一个带有自定义布局的选项卡布局,我希望选项卡处于选中状态时文本为白色,否则为灰色;通过状态选择器实现了此目的,当我在选项卡之间滑动时,它可以完美地工作或当我单击一个按钮时,但是我想动态地更改片段中单击按钮的选项卡,因此我正在使用以下命令:

   MainActivity.viewPager.setCurrentItem(2);

当我使用它来更改选项卡时,选项卡上的文本不会更改,但指示器会更改,

所以我尝试设置一个开关(如下所示)并在我更改标签时调用它:

  MainActivity.viewPager.setCurrentItem(2);
  MainActivity.tabTitleColor();

这有效,我移至的选项卡具有白色文本,而我从其移出的选项卡为灰色,但是如果我在使用开关后单击另一个选项卡,则会得到两个带有白色文本的选项卡(奇怪地刷卡没有此选项)问题,并且运行良好),指标始终处于正确的位置,因此我想知道是否有人知道我能否获得其(指标)位置,所以我对这一切还是陌生的,所以也许有一个更简单的答案

非常感谢

这是我的开关。。。 哈哈哈

    public static void tabTitleColor(){
    int position2 = viewPager.getCurrentItem();
    switch (position2){
        case 0:
            tabLayout.getTabAt(0).getCustomView().setSelected(true);
            tabLayout.getTabAt(1).getCustomView().setSelected(false);
            tabLayout.getTabAt(2).getCustomView().setSelected(false);
            tabLayout.getTabAt(3).getCustomView().setSelected(false);
            System.out.println("tab "+ position2);
            break;
        case 1:
            tabLayout.getTabAt(1).getCustomView().setSelected(true);
            tabLayout.getTabAt(0).getCustomView().setSelected(false);
            tabLayout.getTabAt(2).getCustomView().setSelected(false);
            tabLayout.getTabAt(3).getCustomView().setSelected(false);
            System.out.println("tab "+ position2);
            break;
        case 2:
            tabLayout.getTabAt(2).getCustomView().setSelected(true);
            tabLayout.getTabAt(1).getCustomView().setSelected(false);
            tabLayout.getTabAt(0).getCustomView().setSelected(false);
            tabLayout.getTabAt(3).getCustomView().setSelected(false);
            System.out.println("tab "+ position2);
            break;
        case 3:
            tabLayout.getTabAt(3).getCustomView().setSelected(true);
            tabLayout.getTabAt(1).getCustomView().setSelected(false);
            tabLayout.getTabAt(2).getCustomView().setSelected(false);
            tabLayout.getTabAt(0).getCustomView().setSelected(false);
            System.out.println("tab "+ position2);
            break;
    }
}

根据要求添加我的选择器,它位于一个名为color的文件夹中

 <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:color="@android:color/white" />
<item android:state_focused="true" android:color="@android:color/white" />
<item android:state_pressed="true" android:color="@android:color/white" />
<item android:color="#d1c9c9" />
 </selector>

最后,我设法通过取消自定义视图,选择器和开关并使用一些自定义样式并更改了更改标签的方式来解决此问题,因此我的styles.xml看起来像这样

<style name="CustomTabLayoutStyle" parent="Base.Widget.Design.TabLayout">
    <item name="tabSelectedTextColor">@color/selected_text</item>
    <item name="tabIndicatorColor">@color/colorAccent</item>
    <item name="tabTextAppearance">@style/CustomTabTexStyle</item>
</style>
<style name="CustomTabTexStyle" parent="TextAppearance.Design.Tab">
    <item name="android:textColor">@color/unselected_text</item>
    <item name="textAllCaps">true</item>
</style>

像这样将其添加到我的布局中

style="@style/CustomTabLayoutStyle"

然后改变了我将标签移动到此的方式

                TabLayout tabLayout = MainActivity.tabLayout;
                TabLayout.Tab tab = tabLayout.getTabAt(0);
                tab.select();

现在一切都变态了

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM