7

这让我发疯:我一生都无法弄清楚如何更改 TabPageIndicator 的页脚和文本颜色(来自 Jake Wharton 的 ViewPagerIndicator)。我查看了示例 ViewPagerIndicator 应用程序的源代码,但找不到“默认”和“样式”示例的代码不同之处。Default 具有默认的蓝色页脚和白色文本,而 Styled 示例具有红色页脚并使用灰色字体。

我知道这是可能的,但我不知道该怎么做!!非常感谢任何帮助。:)

4

4 回答 4

4

是的,它与主题的清单定义不同:

对于默认选项卡:

<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">
于 2012-04-16T01:03:02.030 回答
3

我认为正确的答案是将以下样式添加到您的 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" />
于 2013-04-20T12:00:57.243 回答
1

要以编程方式执行此操作,请修改 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)

会是白色的。

于 2014-03-10T11:40:09.140 回答
0

您可以通过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));
    }

希望这个帮助

于 2016-01-16T12:41:10.790 回答