25

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

4

4 に答える 4

29

少しウェブ検索した後、 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 フォルダーにあるセレクター xml ファイルです。

つまり、インジケータ テキストは実際には、オブジェクトからアクセスできるオブジェクトをTextView介して取得できるです。 変数宣言やその他のトリックに関する詳細とコンテキストについては、Fred の例を参照してください。ViewTabWidget

于 2010-06-02T12:53:51.703 に答える
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>     
于 2010-05-10T18:18:20.863 に答える
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 & 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));
于 2012-03-02T12:10:13.327 に答える
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>

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

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

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

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

それは魅力のように機能しました(私にとって)。

乾杯、ランドール

于 2012-06-11T19:21:44.873 に答える