如何像标记一样移动标签文字颜色?

时间:2016-05-20 23:05:19

标签: android tabs

我有一个标签布局,其中包含自定义布局的标签我希望文本在选中标签时为白色,而灰色则不是,我用状态选择器实现了这一点,当我从选项卡到选项卡或当我单击一个,但我想动态更改按钮单击片段上的选项卡,所以我使用这个:

   MainActivity.viewPager.setCurrentItem(2);

当我使用它来更改标签时,标签上的文字没有变化,但指示符确实如此,

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

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

这可以使我移动的标签有白色文字,我从文本中移动的标签是灰色的,但是如果我在使用我的开关后点击另一个标签,我会得到两个带有白色文字的标签(奇怪的是刷不了'有这个问题并且工作得很好),指标总是在正确的位置,所以我想知道是否有人知道我是否能得到它(指标)的位置,我仍然是新的所有这一点所以也许有一个更简单的答案< / p> 非常感谢

继承人我的开关....就在案例中!哈哈哈

    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>

1 个答案:

答案 0 :(得分:0)

我最终通过废弃我的自定义视图,选择器和切换并使用一些自定义样式并更改我更改标签的方式来解决这个问题,因此我的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>

将它添加到我的tablayout中,就像这样

style="@style/CustomTabLayoutStyle"

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

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

现在一切都变得笨拙了

相关问题