Как изменить цвет текста индикатора вкладок в андроиде?

Как изменить цвет текстового индикатора вкладки? я могу изменить значок с помощью тега селектора, приведенного в примере. но не могу цвет текста. как?

5 ответов

Решение

Стиль это в вашем собственном изменении темы

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

Вот новый ответ, который я нашел от Фреда Гротта ( 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 - это XML-файл селектора, расположенный в папке res / drawable.

Другими словами, текст индикатора действительно является TextView который можно получить через View объект, к которому можно получить доступ из TabWidget объект.
Взгляните на примеры Фреда для получения дополнительной информации и контекста, касающихся объявлений переменных, а также других приемов.

Ответ Дэнни С. на 100% правильный. Я просто хотел что-то добавить к нему, чтобы получить полный ответ с файлом ресурсов.

Text_tab_indicator в файле res/color

<?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 & text_tab_selected будет выглядеть так в папке colors/values

<resources> 
<color name="text_tab_selected">#ffffff</color>
<color name="text_tab_unselected">#95ab45</color>

После этого, наконец, добавьте ответ Dannyy в файл класса tab.

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

Изменение цвета также может быть указано без использования 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_tab_indicator, расположенный в /res/color, как желаемый цвет в стиле

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

Это работает как шарм (для меня).

Ура, Рэндалл

Попробуйте ColorStateLists. Удачи.

Другие вопросы по тегам