【问题标题】:Give text of selected tab a different color using ViewPagerIndicator使用 ViewPagerIndicator 为选定选项卡的文本赋予不同的颜色
【发布时间】:2013-05-15 19:15:59
【问题描述】:

我试图让ViewPagerIndicator 中的SampleTabsStyled demo 更改当前选定选项卡的文本颜色,但没有成功。

但是,SampleTitlesStyledTheme demo 在标题/选项卡之间切换时确实会改变其文本颜色。

查看styles xml内部时:

<resources>
    ...
    <style name="CustomTitlePageIndicator">
        <item name="android:background">#18FF0000</item>
        <item name="footerColor">#FFAA2222</item>
        <item name="footerLineHeight">1dp</item>
        <item name="footerIndicatorHeight">3dp</item>
        <item name="footerIndicatorStyle">underline</item>
        <item name="android:textColor">#AA000000</item>
        <item name="selectedColor">#FF000000</item>
        <item name="selectedBold">true</item>
    </style>
    ...
    <style name="CustomTabPageIndicator" parent="Widget.TabPageIndicator">
        <item name="android:background">@drawable/custom_tab_indicator</item>
        <item name="android:textAppearance">@style/CustomTabPageIndicator.Text</item>
        <item name="android:textColor">#FF555555</item>
        <item name="android:textSize">16sp</item>
        <item name="android:divider">@drawable/custom_tab_indicator_divider</item>
        <item name="android:dividerPadding">10dp</item>
        <item name="android:showDividers">middle</item>
        <item name="android:paddingLeft">8dp</item>
        <item name="android:paddingRight">8dp</item>
        <item name="android:fadingEdge">horizontal</item>
        <item name="android:fadingEdgeLength">8dp</item>
    </style>

    <style name="CustomTabPageIndicator.Text" parent="android:TextAppearance.Medium">
        <item name="android:typeface">monospace</item>
    </style>
    ...
</resources>

我看到SampleTitlesStyledTheme 演示使用CustomTitlePageIndicator 样式,它定义了一个selectedColor 项目。所以(也许是天真地)我想补充一下

<item name="selectedColor">#FF000000</item>

对于SampleTabsStyled 演示使用的样式,CustomTabPageIndicator,但是,唉,这不起作用。

这个问题似乎很明显,但我还是会问:有没有办法(使用当前样式 xml)让 SampleTabsStyled 演示中的选项卡的当前选定文本具有与其他选项卡不同的颜色?如果有,怎么做?

编辑

哦,我将它与 ActionBarSherlock 结合使用,以防万一这很重要...

【问题讨论】:

    标签: android actionbarsherlock viewpagerindicator


    【解决方案1】:

    假设您不介意创建额外的 xml,首先尝试在您的 CustomTabPageIndicator.Text(或 CustomTabPageIndicator)中包含属性 android:textColor,如下所示:

    <style name="CustomTabPageIndicator.Text" parent="android:TextAppearance.Medium">
        <item name="android:textColor">@drawable/tab_text_color</item>
        ...
    </style>
    

    tab_text_color.xml 位于 res/drawable 文件夹下:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item
            android:state_selected="true"
            android:color="@color/text_tab_selected" />
        <item
            android:state_selected="false"
            android:color="@color/text_tab_unselected" />
    </selector>
    

    最后,只需在位于 res/values 文件夹中的颜色资源文件 colors.xml 中定义两种颜色 @color/text_tab_selected@color/text_tab_unselected(如果它不存在,则创建一个)。例如:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <color name="text_tab_selected">#FF000000</color>
        <color name="text_tab_unselected">#FF555555</color>
    </resources>
    

    【讨论】:

    • 我可以发誓我尝试过类似的方法,但我一定是在某个地方搞砸了。我只需要在 tab_text_color.xml 文件中将android:textColor 更改为android:color,之后它就像一个魅力一样工作。非常感谢尼奥!
    • 是的,我已经编辑了答案以反映您的真正要求:)
    • 我已经用正确的值(android:color)进行了编辑。当我执行android:textColor 时,会引发运行时异常,并且在我的 logcat 上会出现以下内容:“二进制 XML 文件第 5 行: 标记需要 'android:color' 属性。”。我已编辑您的答案以包含正确的变体。
    【解决方案2】:

    试试这个

    最简单的方法

    <android.support.design.widget.TabLayout
                    xmlns:app="http://schemas.android.com/apk/res-auto"
                    android:id="@+id/tabs"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    app:tabTextColor="@color/White"
                    app:tabSelectedTextColor="@color/Blue"
                    app:tabIndicatorColor="@color/Yellow"
                    app:tabMode="fixed"
                    app:tabGravity="fill"/>
    

    别忘了添加这个依赖

    compile 'com.android.support:design:23.1.1'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-08
      • 1970-01-01
      • 2018-04-16
      • 2017-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-09
      相关资源
      最近更新 更多