私の Android アプリでは、特別なカスタマイズを行わずに TabWidget を使用しています。たとえば、Android 1.6 と 2.1 を比較すると、Android に特定の外観を処理してもらいたいと思います。TabWidget を使用するだけで、SDK がタブの描画方法を定義するため、同じコードが異なる形式のタブにつながります。たとえば、2.1 では次のようになります。
そのため、強調表示されたタブは灰色で、フォントは白で、非常によく読むことができます。
ただし、HTC Sense をお持ちの場合は、次のようになります。
写真はあまり良くありませんが、白い背景に白いテキストであり、それほど読みにくいと信じてください...
私の質問は次のとおりです。
1) Android が白地に白のテキストで TabWidget を作成するのはなぜですか? テキストの色も背景色も定義していないので、システムは適切な色を選択するはずです。
2) 他の TabWidget は HTC Sense で問題なく表示されると思います。では、なぜ私のTabWidgetにはこの問題があり、他の問題はありませんか。
3) Sense 以外のデバイスの外観を変更せずにこの問題を解決するにはどうすればよいですか?
私が言ったように、私は TabWidget をカスタマイズしませんでした。ここに私の定義があります:
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/black"
>
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="0dp"
>
<ScrollView
android:id="@+id/shortenerScrollView"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:background="@android:color/black"
android:fadingEdge="horizontal"
>
したがって、アプリの一般的な背景色として黒を定義する以外に、色やスタイルの定義はありません。唯一の例外は、TabHost と TabWidget に標準の Android ID を使用していることです。
/編集: onCreate メソッドのタブの定義は次のとおりです。
th = getTabHost();
th.addTab(th.newTabSpec("shortener").setIndicator(getString(R.string.tabShortenerName),
res.getDrawable(R.drawable.url_zip)).setContent(R.id.shortenerScrollView));
このクラスは TabActivity を拡張します。
/編集 2: 白いテキストに白いテキストが表示されるデバイスは、Android 2.1 を実行している HTC Legend です。
/編集 3: dream3r は正しかった。targetSdk の値を 4 に変更すると、うまくいきました (以前は 6 に設定されていました)。よくわかりませんが、今のところは我慢できます。:)
これが今どのように見えるかの写真です: