如何更改android中标签指示文字的颜色?

时间:2010-05-10 17:01:54

标签: android tabs tabwidget

如何更改标签文本指示的颜色?我可以使用选择标记来更改example。但不能文字颜色。怎么样?

5 个答案:

答案 0 :(得分:30)

这是我在Fred Grott(http://knol.google.com/k/fred-grott/advance-tabs/)经过一些网络搜索后找到的新答案。
这使您可以为文本颜色设置selector,以便在选择或不选择选项卡时可以使用不同的颜色。如果您为选项卡使用不同的背景颜色,这可能非常有用。当然,您也可以只使用普通颜色而不是选择器。

final TextView tv = (TextView) tabWidget.getChildAt(i).findViewById(android.R.id.title);        
tv.setTextColor(this.getResources().getColorStateList(R.color.text_tab_indicator));

R.color.text_tab_indicator位于res / drawable文件夹中的selector xml file

换句话说,指标文本确实是TextView,可以通过View对象检索,可以从TabWidget对象访问。
查看Fred的例子,了解有关变量声明和其他技巧的更多信息和背景信息。

答案 1 :(得分:24)

风格吧   在您的自定义主题更改

<item name="android:tabWidgetStyle">@android:style/Widget.TabWidget</item> 

<style name="Widget.TabWidget">
        <item name="android:textAppearance">@style/TextAppearance.Widget.TabWidget</item>
        <item name="android:ellipsize">marquee</item>
        <item name="android:singleLine">true</item>
</style>  


<style name="TextAppearance.Widget.TabWidget">
    <item name="android:textSize">14sp</item>
    <item name="android:textStyle">normal</item>
    <item name="android:textColor">@android:color/tab_indicator_text</item>
</style>     

答案 2 :(得分:20)

Danny C的回答是100%正确的。我只想添加一些内容,以便用资源文件做出完整的答案。

res / color文件下的text_tab_indicator

<?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:textColor="@color/text_tab_selected"
    android:state_selected="true" />
<item android:textColor="@color/text_tab_unselected"
    android:state_selected="false" />
</selector>

此text_tab_unselected&amp; text_tab_selected在colors / values文件夹

下将如下所示
<resources> 
<color name="text_tab_selected">#ffffff</color>
<color name="text_tab_unselected">#95ab45</color>

之后,最后在标签类文件中添加Dannyy的答案

final TextView tv = (TextView) tabWidget.getChildAt(i).findViewById(android.R.id.title);        
tv.setTextColor(this.getResources().getColorStateList(R.color.text_tab_indicator));

答案 3 :(得分:6)

也可以在不使用java的情况下声明颜色的变化 - 这可能更好。

我对text_tab_indicator进行了更改(注意textColor已更改为'color'):

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true" android:color="@color/text_tab_selected" />
    <item android:state_selected="false" android:color="@color/text_tab_unselected" />
</selector>

将TabWidget的样式设置为指向xml代码中的特定样式:

<TabWidget
    ...
    style="@style/TabText"
    />

将/ text / color中的text_tab_indicator声明为样式中所需的颜色

<style name="TabText">
    <item name="android:textColor">@color/tab_text_color</item>
</style>

它就像一个魅力(对我而言)。

干杯, 兰德尔

答案 4 :(得分:0)

试试ColorStateLists。祝你好运。