как изменить цвет текста индикатора вкладок в андроиде? - PullRequest
24 голосов
/ 10 мая 2010

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

Ответы [ 5 ]

30 голосов
/ 02 июня 2010

Вот новый ответ, который я нашел от Фреда Гротта (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.
Посмотрите на примеры Фреда для получения дополнительной информации и контекста, касающегося объявлений переменных, а также других приемов.

24 голосов
/ 10 мая 2010

Стиль это в вашей кастомной теме смени

<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>     
20 голосов
/ 02 марта 2012

Ответ Дэнни С. на 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>

После этого, наконец, добавьте ответ Данни в файл класса табуляции

final TextView tv = (TextView) tabWidget.getChildAt(i).findViewById(android.R.id.title);        
tv.setTextColor(this.getResources().getColorStateList(R.color.text_tab_indicator));
6 голосов
/ 11 июня 2012

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

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

Cheers, Randall

0 голосов
/ 14 марта 2011

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

...