web-dev-qa-db-ja.com

Androidのタブインジケータテキストの色を変更する方法は?

タブのテキストインジケータの色を変更するには? example を参照するセレクタータグを使用してアイコンを変更できます。しかし、テキストの色にはできません。どうやって?

24
Praveen

カスタムテーマの変更でスタイルを設定する

<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>     
24
Alex Volovoy

ちょっとしたウェブ検索の後、フレッド・グロットから見つけた新しい答えです( 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の例をご覧ください。

30
Danny C

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と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));
20
Shahzad Imam

色の変化は、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>

Xmlコード内の特定のスタイルを指すようにTabWidgetのスタイルを設定します。

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

スタイルの希望する色として、/ res/colorにあるtext_tab_indicatorを宣言します

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

それは魅力的でした(私にとって)。

乾杯、ランドール

6
javahead76

ColorStateLists を試してください。幸運を。

0
trgraglia