TabWidget Android no tema Luz
Pergunta
Eu tenho um aplicativo que as metas do quadro 1.5 e usa o tema padrão de luz. Ao usar um widget de guia com este tema, as imagens da guia são pouco visíveis, e as legendas da guia são bastante impossível discernir, com exceção da guia ativo no momento.
No tema escuro padrão dessas guias vêm através muito claramente, mas isso não é uma solução Eu ficaria muito feliz com ele. Existe uma simples configuração posso definir, que configura o widget guia para uma melhor visibilidade em temas leves, ou eu teria de mexer com imagens e estilos de texto manualmente?
Solução
não é bonito, mas você pode tentar isso em sua atividade de guia.
// light theme support
final TabHost tabHost = getTabHost();
tabHost.setBackgroundColor(Color.WHITE);
tabHost.getTabWidget().setBackgroundColor(Color.BLACK);
// hack to set font size
LinearLayout ll = (LinearLayout) tabHost.getChildAt(0);
TabWidget tw = (TabWidget) ll.getChildAt(0);
// first tab
RelativeLayout rllf = (RelativeLayout) tw.getChildAt(0);
lf = (TextView) rllf.getChildAt(1);
lf.setTextSize(21);
lf.setPadding(0, 0, 0, 6);
// second tab
RelativeLayout rlrf = (RelativeLayout) tw.getChildAt(1);
rf = (TextView) rlrf.getChildAt(1);
rf.setTextSize(21);
rf.setPadding(0, 0, 0, 6);
/res/values/colors.xml deve ter
<resources>
<drawable name="black">#ff000000</drawable>
<drawable name="white">#ffffffff</drawable>
</resources>
AndroidManiest.xml deve ter
<application android:theme="@android:style/Theme.Light">
Se você quiser fazer algo mais louco, tente http: // ezmobile.wordpress.com/2009/02/02/customized-android-tabs/
Outras dicas
Este é um erro; você pode denunciá-lo no o issue tracker ?
AFAIK, a sua solução de personalizar os sons de texto e imagem estilos direita.
É também digno de nota que o widget de guia no 2.0 não parece ter um estilo de luz.
Ao usar a ferramenta hierarchyviewer eu encontrei o id android para o textview na guia. A melhor maneira de mudar o (cor inclusive) as propriedades de texto é fazendo o seguinte ...
TabWidget tw = (TabWidget)tabHost.findViewById(android.R.id.tabs);
View tabView = tw.getChildTabViewAt(0);
TextView tv = (TextView)tabView.findViewById(android.R.id.title);
tv.setTextSize(20);
Uma maneira muito simples para resolver o problema de cor / contraste no layout:
<TabWidget
android:id="@android:id/tabs"
android:background="#FF000000"
android:padding="2dp"
Isso define o fundo do TabWidget para preto e adiciona um pouco de preenchimento para que você tenha contraste com as abas contra o fundo preto. Não é perfeito, mas funciona em 1.5, 2.2, luz e escuridão tema.