如何为PagerTitleStrip提供两种不同的文字颜色?

时间:2014-09-26 07:07:27

标签: android android-layout android-viewpager viewpagerindicator

我在ViewPager中使用PagerTitleStrip

<android.support.v4.view.ViewPager
    android:id="@id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <android.support.v4.view.PagerTitleStrip
        android:id="@id/pager_title_strip"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        style="@style/PagerTitleStrip"
        />
</android.support.v4.view.ViewPager>

我必须在这个地带上显示n个标题。

final int titles[] = {"Title1" , "Title2", "Title3", "Title4"};

以下是PagerTitleStrip上应用的样式。

<style name="PagerTitleStrip">
    <item name="android:textColor">@color/red</item>
    <item name="android:background">@android:color/white</item>
    <item name="android:textSize">20sp</item>
</style>

请注意,此ViewGroup的AttributeSet中只有一个textColor字段。

我想设置两种不同的颜色(红色和灰色),一种用于可见页面的标题(主要标题),第二种用于不可见的页面(非主要标题,部分可见于边缘)。

此外,在页面更改期间,条带标题应在转换期间更改颜色。

根据文档,setNonPrimaryAlpha(float)允许您为非主要标题定义Alpha值,而不是这个,我想要不同的文本颜色,任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

您可以通过xml完成​​,您必须做的唯一事情是编写颜色状态列表:

pager_tab_strip_text_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:color="@color/background_black_3" android:state_window_focused="false" />
    <item android:color="@color/highlight_gold" android:state_window_focused="true" />

</selector>

将颜色状态列表放在样式中:

<style name="PagerTabStrip">
        <item name="android:textColor">@color/pager_tab_strip_text_selector</item>
    </style>

您必须做的唯一事情是,不要将其设置为样式,而是将其设置为textAppearance,如下所示:

<android.support.v4.view.ViewPager
        android:id="@+id/fragment_light_viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.v4.view.PagerTitleStrip
            android:id="@+id/fragment_light_pagertabstrip"
            android:textAppearance="@style/PagerTabStrip.Light"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@android:color/transparent" />

    </android.support.v4.view.ViewPager>