如何通过编程更改选项卡指示器的颜色

4

我是一个新手Android开发者,在开始编程之前,我发现现在很多应用程序都使用Fragments,特别是带有可滑动视图的Tab。

如何更改Tab指示器/高亮颜色(我已经搜索并通过编程将ActionBar颜色更改为红色),但不知道如何以编程方式将Tab指示器颜色更改为红色。 (以编程方式具有优先级)

我的ActionBar仍然像这样

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

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

这个问题和答案涉及到一个已弃用的选项卡实现。应该使用来自Design支持库的TabLayout来实现新的选项卡。指示器颜色可以通过tabIndicatorColor样式属性进行更改,高度可以通过tabIndicatorHeight属性进行更改。 - Jade
5个回答

4
我使用Jeff Gilfelt的Android Action Bar Style Generator。您可以使用图形用户界面来为选项卡设置样式,最终您将获得源代码,您可以使用、检查和相应地修改。 :)
这是一个链接。 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

2

您可以通过创建自定义选项卡指示器视图并使用setIndicator为选项卡实现不同的指示器。


1

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

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>

我可能在第一种样式中错误地使用了itemname属性和第二种样式中的parent属性。但通常情况下,它看起来会像这样。
正如您所看到的那样,这很容易实现。 如果想要支持不同的屏幕,你只需制作9patch drawable即可。
此外,您还可以查看Jake Wharton的 ViewPagerIndicator,这是最灵活的使用任何导航模式的方法。

如何仅更改指示器而不更改整个选项卡的背景? - CodeMonkey

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);

0

你需要链接

setIcon(R.drawable.ic_icon_name_here)

如果您想要选项卡具有图标

对于选项卡颜色,您需要使用自定义样式。有关这些解决方案的更多信息,请查看如何更改Android选项卡小部件的背景?


我知道 setIcon 需要使用 drawable,但是我不知道如何为每个选项卡使用不同的图片。 - JESUS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接