更改TabPageIndicator页脚和文本颜色(ViewPagerIndicator)

时间:2012-04-16 00:29:25

标签: android

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

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

4 个答案:

答案 0 :(得分:4)

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

对于默认标签:

<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">

答案 1 :(得分: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" />

答案 2 :(得分: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)

会是白色的。

答案 3 :(得分: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));
    }

希望这个帮助