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



我是Android的新手,在开始编程之前,我发现现在许多应用程序都在使用片段,尤其是带有可滑动视图的选项卡

如何更改选项卡指示器/突出显示颜色(我用谷歌搜索并以编程方式将操作栏颜色更改为红色),但不知道如何将选项卡指示器颜色更改为红色。(以编程方式优先)

我的动作栏仍然是这样的

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

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

我使用 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

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

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

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 可绘制对象。

您还可以查看Jake Wharton的ViewPagerIndicator,这是使用任何导航模式的最灵活方式。

你会想要链接

setIcon(R.drawable.ic_icon_name_here)

让您的标签具有图标

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

如果您知道将有多少个选项卡,则很容易以编程方式更改每个选项卡或仅更改其中几个选项卡的图标颜色。

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

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

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

最新更新