如何以编程方式更改选项卡指示器颜色

时间:2014-02-18 07:57:06

标签: android android-fragments android-actionbar

Android新手 ,在开始编程之前,我发现现在很多应用都使用片段,特别是 标签可滑动视图

如何更改 标签指示符/突出显示颜色 (我用Google搜索并将ActionBar颜色更改为RED编程),但不知道如何将标签指示器颜色更改为红色。 (以编程方式优先)

仍然我的ActionBar看起来像this

我使用以下行来更改ActionBar 的 背景颜色,但我还需要以编程方式更改Tab Indicator的颜色。

actionBar = getActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable(Color.RED));

5 个答案:

答案 0 :(得分:4)

我使用了Jeff Gilfelt的Android Action Bar Style Generator。您可以使用GUI来设置选项卡的样式,最后您可以获得可以使用的源代码,相应地进行检查和修改。 :)

这是一个链接。

http://jgilfelt.github.io/android-actionbarstylegenerator/#name=example&compat=holo&theme=light&actionbarstyle=solid&texture=0&hairline=0&neutralPressed=1&backColor=E4E4E4%2C100&secondaryColor=D6D6D6%2C100&tabColor=33B5E5%2C100&tertiaryColor=F2F2F2%2C100&accentColor=33B5E5%2C100&cabBackColor=FFFFFF%2C100&cabHighlightColor=33B5E5%2C100

答案 1 :(得分:2)

您可以通过创建自定义标签指示符视图来实现,并使用setIndicator为标签实现不同的不同指标。

答案 2 :(得分:0)

你想链接

setIcon(R.drawable.ic_icon_name_here)

您的标签包含图标

对于要使用自定义样式的标签颜色,有关这些解决方案的更多信息,请查看How do I change the background of an Android tab widget?

答案 3 :(得分:0)

更改选择器颜色的唯一方法是使用样式(我看到“请注意”,顺便说一句)。

drawable文件夹中创建 tab_selector.xml 并执行以下操作:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true" android:drawable="@drawable/tab_selected_pink" />
    <item android:state_selected="false" android:drawable="@drawable/tab_unselected_white" />
</selector>

然后在你的 values/styles.xml 中,我想做这样的事情:

<style name="AppTheme" parent="Theme.AppCompat.Light">
     <item name="android:actionBarTabBarStyle">@style/MyTabStyle</item>
</style>

<style name="MyTabStyle" parent="android:Widget.ActionBar.TabBar">
    <item name="android:background">@drawable/tab_indicator_selector</item>
</style>

第一种风格的item name attribute和第二种风格的parent attribute我可能错了。但共同点看起来就是这样。

正如您所见,这很容易。 如果你想支持不同的屏幕,那么你真正需要做的就是制作9patch drawables。

你也可以看看杰克沃顿的ViewPagerIndicator,这是使用任何导航模式最灵活的方式。

答案 4 :(得分:0)

如果您知道有多少个标签,可以很容易地以编程方式为每个标签或仅几个标签更改图标颜色。

所有您需要做的就是复制用于制表符的现有可绘制文件,为其命名,然后更改其中的颜色。

然后您要做的就是获取每个选项卡,并设置要用作图标的可绘制对象。

tabLayout.setupWithViewPager(pager, true);
tabLayout.getTabAt(0).setIcon(R.drawable.tab_color_grey);
tabLayout.getTabAt(1).setIcon(R.drawable.tab_color_black);
tabLayout.getTabAt(2).setIcon(R.drawable.tab_color_black);
tabLayout.getTabAt(3).setIcon(R.drawable.tab_color_black);
tabLayout.getTabAt(4).setIcon(R.drawable.tab_color_gold);