Android: Hervorgehobener Tab von TabWidget auf HTC Sense nicht lesbar
In meiner Android-App verwende ich ein TabWidget ohne spezielle Anpassungen. Ich möchte, dass Android sich um das spezifische Erscheinungsbild kümmert, was gut funktioniert, wenn Sie beispielsweise Android 1.6 mit 2.1 vergleichen. Wenn Sie nur ein TabWidget verwenden, führt derselbe Code zu verschiedenen Formen von Registerkarten, da das SDK das Zeichnen definiert. So sieht es zum Beispiel in 2.1 aus:
So ist die hervorgehobene Registerkarte grau und die Schriftart weiß, und Sie können sie recht gut lesen.
Aber wenn Sie HTC Sense haben, sieht es so aus:
Das Bild ist nicht so gut, aber glauben Sie mir einfach, dass es weißer Text auf weißem Hintergrund ist, der nicht wirklich so einfach zu lesen ist ...
Meine Fragen sind:
1) Warum erstellt Android ein TabWidget mit weißer Schrift auf weißer Schrift? Ich habe weder die Textfarbe noch die Hintergrundfarbe definiert, daher sollte das System sinnvolle Farben auswählen.
2) Ich gehe davon aus, dass andere TabWidgets auf dem HTC Sense gut aussehen, da es sonst ein ziemlich großes und beliebtes Problem wäre. Warum hat mein TabWidget dieses Problem und nicht andere?
3) Wie kann ich dieses Problem beheben, ohne das Erscheinungsbild auf Nicht-Sense-Geräten zu ändern?
Wie gesagt, ich habe das TabWidget in keiner Weise angepasst. Hier ist meine Definition:
<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"
>
So, abgesehen davon, dass ich Schwarz als meine allgemeine Hintergrundfarbe für die App definiere, gibt es keine Definition von Farbe oder Stil. Die einzige Ausnahme könnte sein, dass ich Standard-Android-IDs für TabHost und TabWidget verwende.
/ Edit: Hier ist die Definition der Registerkarten in der onCreate-Methode:
th = getTabHost();
th.addTab(th.newTabSpec("shortener").setIndicator(getString(R.string.tabShortenerName),
res.getDrawable(R.drawable.url_zip)).setContent(R.id.shortenerScrollView));
Die Klasse erweitert eine TabActivity.
/ Bearbeiten 2: Das Gerät, auf dem der weiße Text angezeigt wird, ist ein HTC Legend mit Android 2.1.
/ Edit 3: dream3r hatte recht. Das Ändern des targetSdk-Werts auf 4 hat auch für mich den Trick getan (vorher war es auf 6 gesetzt)! Ich verstehe es nicht wirklich, aber ich kann jetzt damit leben. :)
Hier ist ein Bild, wie es jetzt aussieht: