如何在viewpagerindicator选项卡上更改选项卡背景?

8
我正在使用Jake Wharton的ViewpagerIndicator库。我正在与ActionBarSherlock库中的选项卡代码一起使用。一切都很好,但我正在尝试样式化选项卡的背景,但无法弄清楚如何操作。我希望有一个深色操作栏,带有深色选项卡和浅色片段(选项卡内容)
我正在使用Theme.Sherlock.Light.DarkActionBar作为基本主题。我通过将其设置为选项卡属性的父级来扩展此样式(例如文本颜色、指示器颜色等)。这会导致深色操作栏,浅色选项卡和浅色片段。
我找不到任何可以更改选项卡本身背景的方法。唯一能更改它的方式是将整个应用程序更改为黑色(使用Theme.Sherlock)。这是目前我的代码:
<style name="vpiTheme" parent="Theme.Sherlock.Light.DarkActionBar">
    <item name="vpiTabPageIndicatorStyle">@style/CustomTabPageIndicator</item>
</style>

<style name="CustomTabPageIndicator" parent="Widget.TabPageIndicator">
    <item name="android:textColor">#FF000000</item>
    <item name="android:paddingTop">6dp</item>
    <item name="android:paddingBottom">6dp</item>
    <item name="android:paddingLeft">16dip</item>
    <item name="android:paddingRight">16dip</item>
    <item name="android:maxLines">2</item>
</style>
2个回答

7

由于9-patch可拉伸图片大多是透明的,因此可以通过将背景颜色添加到整个ViewPagerIndicator来更改选项卡的颜色,如下所示:

<com.viewpagerindicator.TabPageIndicator
    android:id="@+id/indicator"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:background="#333333" />

这样你就可以继续使用基于Theme.Sherlock.Light.DarkActionBar的主题,而不需要创建新的可绘制对象。

0

首先将一个可绘制对象添加到您的项目中,下面这个称为tab_indicator.xml:

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@android:color/black" />
<item android:state_focused="false" android:state_selected="true"  android:state_pressed="false" android:drawable="@android:color/white" />
<item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@android:color/black" />
<item android:state_focused="true" android:state_selected="true"  android:state_pressed="false" android:drawable="@android:color/white" />
</selector>

然后在你的样式中引用你的drawable:
<item name="android:background">@drawable/tab_indicator</item>

这将使活动标签具有白色背景,其他标签为黑色。


这将会替换掉彩色指示器,不是吗? - Flyview
是的,没错。我忘记了我的目标是要移除指示器。这里的答案https://dev59.com/a2kv5IYBdhLWcg3wwjkI应该适用,因为默认的指示器/背景是使用9 patch图像完成的。 - grant

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