Android: guia destacada do TabWidget não legível no HTC Sense
No meu aplicativo Android, eu uso um TabWidget sem nenhuma personalização especial. Gostaria que o Android cuidasse da aparência específica, o que funciona bem se você comparar o Android 1.6 com o 2.1, por exemplo. Ao usar apenas um TabWidget, o mesmo código leva a diferentes formas de guias, porque o SDK define como desenhá-lo. Aqui está como fica o 2.1, por exemplo:
Portanto, a guia destacada é cinza e a fonte é branca, e você pode lê-la muito bem.
Mas, se você possui o HTC Sense, fica assim:
A imagem não é tão boa, mas acredite: é um texto em branco sobre fundo branco que não é tão fácil de ler ...
Minhas perguntas são:
1) Por que o Android cria um TabWidget com texto branco sobre branco? Como nunca defini a cor do texto ou a cor do plano de fundo, o sistema deve escolher cores sensíveis.
2) Suponho que outros TabWidgets tenham uma boa aparência no HTC Sense, porque, caso contrário, seria um problema grande e popular. Então, por que meu TabWidget está tendo esse problema e não outros?
3) Como posso corrigir esse problema sem alterar a aparência em dispositivos que não sejam do Sense?
Como eu disse, não customizei o TabWidget de forma alguma. Aqui está a minha definição:
<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"
>
Portanto, além de definir preto como minha cor geral de fundo do aplicativo, não há definição de cor ou estilo. A única exceção pode ser o uso de IDs padrão do Android para o TabHost e o TabWidget.
/ Edit: Aqui está a definição das guias no método onCreate:
th = getTabHost();
th.addTab(th.newTabSpec("shortener").setIndicator(getString(R.string.tabShortenerName),
res.getDrawable(R.drawable.url_zip)).setContent(R.id.shortenerScrollView));
A classe estende um TabActivity.
/ Edit 2: O dispositivo que aparece com texto branco sobre branco é um HTC Legend executando o Android 2.1 btw.
/ Edit 3: dream3r estava certo. Alterar o valor targetSdk para 4 também funcionou para mim (antes, era definido como 6)! Eu realmente não entendo, mas posso viver com isso por enquanto. :)
Aqui está uma imagem de como fica agora: