这让我发疯:我一生都无法弄清楚如何更改 TabPageIndicator 的页脚和文本颜色(来自 Jake Wharton 的 ViewPagerIndicator)。我查看了示例 ViewPagerIndicator 应用程序的源代码,但找不到“默认”和“样式”示例的代码不同之处。Default 具有默认的蓝色页脚和白色文本,而 Styled 示例具有红色页脚并使用灰色字体。
我知道这是可能的,但我不知道该怎么做!!非常感谢任何帮助。:)
这让我发疯:我一生都无法弄清楚如何更改 TabPageIndicator 的页脚和文本颜色(来自 Jake Wharton 的 ViewPagerIndicator)。我查看了示例 ViewPagerIndicator 应用程序的源代码,但找不到“默认”和“样式”示例的代码不同之处。Default 具有默认的蓝色页脚和白色文本,而 Styled 示例具有红色页脚并使用灰色字体。
我知道这是可能的,但我不知道该怎么做!!非常感谢任何帮助。:)
是的,它与主题的清单定义不同:
对于默认选项卡:
<activity
android:name=".SampleTabsDefault"
android:label="Tabs/Default"
android:theme="@style/Theme.PageIndicatorDefaults">
和样式标签:
<activity
android:name=".SampleTabsStyled"
android:label="Tabs/Styled"
android:theme="@style/StyledIndicators">
我认为正确的答案是将以下样式添加到您的 style.xml 文件中(其中包含告诉 VPI 如何显示的元素)。像这样的东西:
<style name="Widget.MyTitlepageIndicator">
<item name="footerColor">#ff99cc33</item>
<item name="footerIndicatorStyle">underline</item>
<item name="footerIndicatorHeight">3dp</item>
<item name="footerLineHeight">1.5dp</item>
<item name="footerPadding">6dp</item>
<item name="selectedColor">#ffffffff</item>
</style>
然后,在您定义 VPI 的 layout.xml 文件中,您只需告诉它您创建的样式,如下所示:
<com.viewpagerindicator.TitlePageIndicator
android:id="@+id/history_vp_ind"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
style="@style/Widget.MyTitlepageIndicator" />
要以编程方式执行此操作,请修改 TabPageIndicator 并添加以下方法:
public void setTextColor(int color) {
for (int i = 0; i < mTabLayout.getChildCount(); i++) {
View child = mTabLayout.getChildAt(i);
if (child instanceof TextView)
((TextView) child).setTextColor(color);
}
}
然后只需使用该方法更改指标中视图的文本颜色。例如
setTextColor(0xFFFFFFFF)
会是白色的。
您可以通过2 种方式更改TabPageIndicator的默认背景
1.可以在XML中改变背景
<com.viewpagerindicator.TabPageIndicator
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#0c445c" />
2.替换viewpager库中TabPageIndicator.java类中的构造函数
public TabPageIndicator(Context context, AttributeSet attrs) {
super(context, attrs);
setHorizontalScrollBarEnabled(false);
mTabLayout = new IcsLinearLayout(context, R.attr.vpiTabPageIndicatorStyle);
mTabLayout.setBackgroundColor(Color.parseColor("#0c445c"));
addView(mTabLayout, new ViewGroup.LayoutParams(WRAP_CONTENT, MATCH_PARENT));
}
希望这个帮助