我在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值,而不是这个,我想要不同的文本颜色,任何人都可以帮助我吗?
答案 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>