1

TabHost のインジケーターとして TextViews を使用しています。テキスト ビューにカスタム背景を使用していますが、テキストの色については何もしていません。私のアクティビティの onCreate メソッドでは、現在のタブを問題なく設定できます。

アクティビティを開始すると、選択したタブの背景とタブのコンテンツが正しく表示されますが、両方のタブのテキストの色は最初は明るい灰色です。ただし、いずれかのタブをクリックすると、それ以降、選択したタブのテキストの色は黒になります。実際にタブをクリックしたときのように、テキストの色を黒に更新する方法でプログラムでタブを選択する方法が見つからないようです。私は試した:

  • タブ ホストで setCurrentTab を呼び出す
  • タブ ウィジェットで setCurrentTab を呼び出す
  • タブ ウィジェットで focusCurrentTab を呼び出す
  • インジケータ テキスト ビューで setSelected(true) を呼び出す
  • タブ ウィジェットの子ビューで setSelected(true) を呼び出す

要約すると、カスタムのテキストの色を適用したくありません。デフォルトのテーマの色を使用したいだけですが、プログラムで選択した後のタブの状態を、クリックした後の状態とまったく同じにしたいのです。

4

1 に答える 1

4

MonoDroid を使用して同じ問題が発生しています。

// Set current tab to ScheduleTab
TabHost.CurrentTab = 1;
// TODO Focus not working completely
TabHost.TabWidget.FocusCurrentTab(1);

正しいタブが設定され、アクティブになっていますが、テキストの色が黒ではなく薄い灰色になっています。タッチ入力を使用してタブを選択すると、テキストの色が黒に変わりますが、プログラムで設定すると変わりません。

テキストの色だけでなく、下部のストリップ インジケーターも正しくレンダリングされます。

私が見つけた修正は、テキストの色を設定するための明示的なセレクターを作成して使用することでした。

drawable/TabTextColors.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true" android:color="#444"/>
    <item android:state_focused="true" android:color="#444"/>
    <item android:state_pressed="true" android:color="#444"/>
    <item android:color="#ccc"/>
</selector>

そして、タブビューから参照します。

    <TextView
        android:id="@+id/tabsText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:padding="10dip"
        android:text="TITLE"
        android:textSize="13dip"
        android:textStyle="bold"
        android:textColor="@drawable/TabTextColors" />
于 2012-09-20T13:49:47.307 に答える