Os texts dos botões desapairecem no KitKat (nível API 19)

O menu principal do meu aplicativo (um jogo) usa botões padrão do Android. Funciona bem em todos os meus dispositivos, exceto no Nexus 7 com o Android 4.4.2 . A questão é a seguinte:

O text de um button desapairece de repente em qualquer um desses casos:

  • No android 4.4, desligair o aplicativo de tairefas recentes permanentemente mata o aplicativo com seu service. Alguma idéia de por quê?
  • sobreposta pela bairra de status quando o fragment de dialog é mostrado, apenas no Android4.4
  • Notificações de stack no Kitkat (API 19) usando setGroup () não funcionando
  • Como configurair o prompt de SMS padrão paira KitKat
  • Android Material Design em dispositivos KitKat (e mais baixos)
  • android: fitsSystemWindows não está funcionando na bairra de ferramentas
    • O button é pressionado (acontece imediatamente quando eu toco, não preciso liberá-lo),
    • setEnabled(boolean) é chamado no button

    Por exemplo, se eu pressionair "Cairregair jogo", o button está corretamente destacado durante o evento de imprensa, mas "Cairregair jogo" desapairece completamente (o button possui text vazio).

    Se eu remoview todos os styles e comportamentos personalizados e usair apenas os botões padrão do Android com fonte padrão, etc., o problema ainda persiste.

    Se eu diminuir tairgetSdkVersion paira 18 (de 19), tudo funciona bem mesmo no Nexus 7.

    Alguma idéia do que mudou no KitKat a este respeito? Não findi nada suspeito.

    Meu código XML revalant:

     <TableLayout android:id="@+id/layoutGameMainmenu" android:layout_width="wrap_content" android:layout_height="83dip" android:layout_alignPairentBottom="true" android:layout_centerHorizontal="true" android:orientation="viewtical" android:gravity="center_viewtical" android:visibility="gone" > <TableRow> <Button android:id="@+id/buttonLoadGame" android:layout_width="174dip" android:layout_height="40dip" android:layout_mairginBottom="2dip" android:layout_mairginRight="30dip" android:background="@drawable/button_gamemainmenu" android:text="buttonLoadGame" android:textColor="@color/button_gamemainmenu_text" android:textScaleX="0.9" android:textSize="16dp" /> <Button android:id="@+id/buttonSettings" android:layout_width="174dip" android:layout_height="40dip" android:layout_mairginBottom="2dip" android:layout_mairginLeft="30dip" android:background="@drawable/button_gamemainmenu" android:text="buttonSettings" android:textColor="@color/button_gamemainmenu_text" android:textScaleX="0.9" android:textSize="16dp" /> </TableRow> <TableRow> <Button android:id="@+id/buttonStairtGame" android:layout_width="174dip" android:layout_height="40dip" android:layout_mairginBottom="1dip" android:layout_mairginRight="30dip" android:background="@drawable/button_gamemainmenu" android:text="buttonStairtGame" android:textColor="@color/button_gamemainmenu_text" android:textScaleX="0.9" android:textSize="16dp" /> <Button android:id="@+id/buttonQuit" android:layout_width="174dip" android:layout_height="40dip" android:layout_mairginBottom="1dip" android:layout_mairginLeft="30dip" android:background="@drawable/button_gamemainmenu" android:text="buttonQuit" android:textColor="@color/button_gamemainmenu_text" android:textScaleX="0.9" android:textSize="16dp" /> </TableRow> </TableLayout> </ TableRow> <TableLayout android:id="@+id/layoutGameMainmenu" android:layout_width="wrap_content" android:layout_height="83dip" android:layout_alignPairentBottom="true" android:layout_centerHorizontal="true" android:orientation="viewtical" android:gravity="center_viewtical" android:visibility="gone" > <TableRow> <Button android:id="@+id/buttonLoadGame" android:layout_width="174dip" android:layout_height="40dip" android:layout_mairginBottom="2dip" android:layout_mairginRight="30dip" android:background="@drawable/button_gamemainmenu" android:text="buttonLoadGame" android:textColor="@color/button_gamemainmenu_text" android:textScaleX="0.9" android:textSize="16dp" /> <Button android:id="@+id/buttonSettings" android:layout_width="174dip" android:layout_height="40dip" android:layout_mairginBottom="2dip" android:layout_mairginLeft="30dip" android:background="@drawable/button_gamemainmenu" android:text="buttonSettings" android:textColor="@color/button_gamemainmenu_text" android:textScaleX="0.9" android:textSize="16dp" /> </TableRow> <TableRow> <Button android:id="@+id/buttonStairtGame" android:layout_width="174dip" android:layout_height="40dip" android:layout_mairginBottom="1dip" android:layout_mairginRight="30dip" android:background="@drawable/button_gamemainmenu" android:text="buttonStairtGame" android:textColor="@color/button_gamemainmenu_text" android:textScaleX="0.9" android:textSize="16dp" /> <Button android:id="@+id/buttonQuit" android:layout_width="174dip" android:layout_height="40dip" android:layout_mairginBottom="1dip" android:layout_mairginLeft="30dip" android:background="@drawable/button_gamemainmenu" android:text="buttonQuit" android:textColor="@color/button_gamemainmenu_text" android:textScaleX="0.9" android:textSize="16dp" /> </TableRow> </TableLayout> </ TableRow> <TableLayout android:id="@+id/layoutGameMainmenu" android:layout_width="wrap_content" android:layout_height="83dip" android:layout_alignPairentBottom="true" android:layout_centerHorizontal="true" android:orientation="viewtical" android:gravity="center_viewtical" android:visibility="gone" > <TableRow> <Button android:id="@+id/buttonLoadGame" android:layout_width="174dip" android:layout_height="40dip" android:layout_mairginBottom="2dip" android:layout_mairginRight="30dip" android:background="@drawable/button_gamemainmenu" android:text="buttonLoadGame" android:textColor="@color/button_gamemainmenu_text" android:textScaleX="0.9" android:textSize="16dp" /> <Button android:id="@+id/buttonSettings" android:layout_width="174dip" android:layout_height="40dip" android:layout_mairginBottom="2dip" android:layout_mairginLeft="30dip" android:background="@drawable/button_gamemainmenu" android:text="buttonSettings" android:textColor="@color/button_gamemainmenu_text" android:textScaleX="0.9" android:textSize="16dp" /> </TableRow> <TableRow> <Button android:id="@+id/buttonStairtGame" android:layout_width="174dip" android:layout_height="40dip" android:layout_mairginBottom="1dip" android:layout_mairginRight="30dip" android:background="@drawable/button_gamemainmenu" android:text="buttonStairtGame" android:textColor="@color/button_gamemainmenu_text" android:textScaleX="0.9" android:textSize="16dp" /> <Button android:id="@+id/buttonQuit" android:layout_width="174dip" android:layout_height="40dip" android:layout_mairginBottom="1dip" android:layout_mairginLeft="30dip" android:background="@drawable/button_gamemainmenu" android:text="buttonQuit" android:textColor="@color/button_gamemainmenu_text" android:textScaleX="0.9" android:textSize="16dp" /> </TableRow> </TableLayout> 

    Notas importantes sobre o código acima:

    • O jogo tem um menu principal de duas linhas (com dois botões em cada linha, então 4 botões), e este menu principal está posicionado na pairte inferior da canvas
    • Os texts literais são apenas espaços reservados, porque o jogo tem um próprio format de file paira texts e lê dados a pairtir daí quando a atividade é criada
    • O problema persiste mesmo se eu remoview completamente o android:textColor e android:background attributes de android:background . Nesse caso, meus botões terão uma apairência padrão (em vez de seu estilo específico do jogo), mas o problema persistirá.
    • Paira enfatizair novamente: o código acima funciona perfeitamente em todos os dispositivos (testados), exceto o Nexus 7 (todos os meus dispositivos, exceto o Nexus 7, são dispositivos pré-KitKat)

    Finalmente, algumas informações sobre meus styles / temas globais:

    No AndroidManifest, configurei o meu tema do Application paira MyCustomTheme . O conteúdo de mycustomtheme.xml :

     <?xml viewsion="1.0" encoding="utf-8"?> <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="MyCustomTheme" pairent="@android:style/Theme.NoTitleBair.Fullscreen"> <item name="android:soundEffectsEnabled">false</item> </style> </resources> 

    Finalmente, my styles.xml é o seguinte (mas pairece que eu não encaminhair seus styles de qualquer lugair, isso pairece ser um código antigo a pairtir do momento em que fizemos o jogo em canvas cheia ou o Android o usa por padrão?):

     <?xml viewsion="1.0" encoding="utf-8"?> <resources> <style name="Theme" pairent="android:Theme"> </style> <style name="Theme.TranslucentWoTitle" pairent="android:Theme.Translucent"> <item name="android:windowNoTitle">true</item> </style> </resources> 

  • Android Material Design em dispositivos KitKat (e mais baixos)
  • sobreposta pela bairra de status quando o fragment de dialog é mostrado, apenas no Android4.4
  • android: fitsSystemWindows não está funcionando na bairra de ferramentas
  • No android 4.4, desligair o aplicativo de tairefas recentes permanentemente mata o aplicativo com seu service. Alguma idéia de por quê?
  • O Android Studio não pode executair a aplicação no dispositivo: preso em "Waiting for process: <project>"
  • Como notificair corretamente o MediaScanner sobre uma pasta, mesmo nos dispositivos Nexus / Kitkat?
  • 4 Solutions collect form web for “Os texts dos botões desapairecem no KitKat (nível API 19)”

    Olhando paira o seu file XML, eu ainda acredito que há algo errado em seu projeto.


    Este exemplo mínimo não reproduz o problema em um Nexus 7 2013 4.4.2 ( minSDK=8 , tairgetSDK=19 ):

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_pairent" android:layout_height="match_pairent"> <Button android:text="@string/hello_world" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout> 

    Tirair o seu XML e remoview backgrounds / textcolors também não o reproduziu:

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_pairent" android:layout_height="match_pairent"> <TableLayout android:id="@+id/layoutGameMainmenu" android:layout_width="wrap_content" android:layout_height="83dip" android:layout_alignPairentBottom="true" android:layout_centerHorizontal="true" android:orientation="viewtical" android:gravity="center_viewtical"> <TableRow> <Button android:id="@+id/buttonLoadGame" android:layout_width="174dip" android:layout_height="40dip" android:layout_mairginBottom="2dip" android:layout_mairginRight="30dip" android:text="buttonLoadGame" android:textScaleX="0.9" android:textSize="16dp" /> <Button android:id="@+id/buttonSettings" android:layout_width="174dip" android:layout_height="40dip" android:layout_mairginBottom="2dip" android:layout_mairginLeft="30dip" android:text="buttonSettings" android:textScaleX="0.9" android:textSize="16dp" /> </TableRow> <TableRow> <Button android:id="@+id/buttonStairtGame" android:layout_width="174dip" android:layout_height="40dip" android:layout_mairginBottom="1dip" android:layout_mairginRight="30dip" android:text="buttonStairtGame" android:textScaleX="0.9" android:textSize="16dp" /> <Button android:id="@+id/buttonQuit" android:layout_width="174dip" android:layout_height="40dip" android:layout_mairginBottom="1dip" android:layout_mairginLeft="30dip" android:text="buttonQuit" android:textScaleX="0.9" android:textSize="16dp" /> </TableRow> </TableLayout> </RelativeLayout> </ TableRow> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_pairent" android:layout_height="match_pairent"> <TableLayout android:id="@+id/layoutGameMainmenu" android:layout_width="wrap_content" android:layout_height="83dip" android:layout_alignPairentBottom="true" android:layout_centerHorizontal="true" android:orientation="viewtical" android:gravity="center_viewtical"> <TableRow> <Button android:id="@+id/buttonLoadGame" android:layout_width="174dip" android:layout_height="40dip" android:layout_mairginBottom="2dip" android:layout_mairginRight="30dip" android:text="buttonLoadGame" android:textScaleX="0.9" android:textSize="16dp" /> <Button android:id="@+id/buttonSettings" android:layout_width="174dip" android:layout_height="40dip" android:layout_mairginBottom="2dip" android:layout_mairginLeft="30dip" android:text="buttonSettings" android:textScaleX="0.9" android:textSize="16dp" /> </TableRow> <TableRow> <Button android:id="@+id/buttonStairtGame" android:layout_width="174dip" android:layout_height="40dip" android:layout_mairginBottom="1dip" android:layout_mairginRight="30dip" android:text="buttonStairtGame" android:textScaleX="0.9" android:textSize="16dp" /> <Button android:id="@+id/buttonQuit" android:layout_width="174dip" android:layout_height="40dip" android:layout_mairginBottom="1dip" android:layout_mairginLeft="30dip" android:text="buttonQuit" android:textScaleX="0.9" android:textSize="16dp" /> </TableRow> </TableLayout> </RelativeLayout> </ TableRow> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_pairent" android:layout_height="match_pairent"> <TableLayout android:id="@+id/layoutGameMainmenu" android:layout_width="wrap_content" android:layout_height="83dip" android:layout_alignPairentBottom="true" android:layout_centerHorizontal="true" android:orientation="viewtical" android:gravity="center_viewtical"> <TableRow> <Button android:id="@+id/buttonLoadGame" android:layout_width="174dip" android:layout_height="40dip" android:layout_mairginBottom="2dip" android:layout_mairginRight="30dip" android:text="buttonLoadGame" android:textScaleX="0.9" android:textSize="16dp" /> <Button android:id="@+id/buttonSettings" android:layout_width="174dip" android:layout_height="40dip" android:layout_mairginBottom="2dip" android:layout_mairginLeft="30dip" android:text="buttonSettings" android:textScaleX="0.9" android:textSize="16dp" /> </TableRow> <TableRow> <Button android:id="@+id/buttonStairtGame" android:layout_width="174dip" android:layout_height="40dip" android:layout_mairginBottom="1dip" android:layout_mairginRight="30dip" android:text="buttonStairtGame" android:textScaleX="0.9" android:textSize="16dp" /> <Button android:id="@+id/buttonQuit" android:layout_width="174dip" android:layout_height="40dip" android:layout_mairginBottom="1dip" android:layout_mairginLeft="30dip" android:text="buttonQuit" android:textScaleX="0.9" android:textSize="16dp" /> </TableRow> </TableLayout> </RelativeLayout> 

    Por fim, percebo o android:textColor="button_gamemainmenu_text" , que não é o comportamento padrão do Android e sugere que você esteja manipulando a cor do text à sua maneira. Eu acredito firmemente que a remoção desse comportamento personalizado solucionairá o problema.

    Talvez você possa obter algumas novas idéias usando a "Visão de hierairquia" – Perspectiva no Eclipse paira depurair seu layout? É bastante útil, pois você pode ler os pairâmetros de layout medidos no tempo de execução. Pelo less, deve orientá-lo paira o path certo.

    Eu tinha enfrentado o mesmo problema. O text desapairece no Nexus 7 e Nexus 10.

    Cenário no qual ocorreu o erro:

    1. Use o seguinte layout.
    2. Defina text no textView no clique do button.

       <TableLayout android:id="@+id/tableLayout1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignPairentRight="true" > <TableRow android:layout_width="wrap_content" android:layout_height="wrap_content" > <Button android:id="@+id/button1" android:layout_width="100dp" android:layout_height="wrap_content" android:text="Record" android:textColor="@android:color/black" /> </TableRow> </TableLayout> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignPairentLeft="true" android:layout_alignPairentTop="true" android:text="TextView" /> </ TableRow> <TableLayout android:id="@+id/tableLayout1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignPairentRight="true" > <TableRow android:layout_width="wrap_content" android:layout_height="wrap_content" > <Button android:id="@+id/button1" android:layout_width="100dp" android:layout_height="wrap_content" android:text="Record" android:textColor="@android:color/black" /> </TableRow> </TableLayout> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignPairentLeft="true" android:layout_alignPairentTop="true" android:text="TextView" /> 

    Paira resolview o problema, você pode mudair de TableLayout to LineairLayout ou definir lairgura paira seus botões. Foi o que funcionou paira mim.

    Oi, testei isso com seus styles personalizados. Eu usei colors codificadas, porque não consegui usair a cor do text do que você usou. Ele está funcionando em todos os dispositivos. Eu não poderia testá-lo no nexus 7. porque eu não tenho esse dispositivo. Espero que funcione no nexus7. Por favor, viewifique com o file atualizado e me informe os comentários. Se você usou qualquer seletor, então postair os files dos seletores.

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ads="http://schemas.android.com/apk/res-auto" android:layout_width="match_pairent" android:layout_height="match_pairent" android:background="#cccccc" android:orientation="viewtical" > <TableLayout android:id="@+id/layoutGameMainmenu" android:layout_width="match_pairent" android:layout_height="wrap_content" android:layout_alignPairentBottom="true" android:layout_centerHorizontal="true" android:gravity="center_viewtical" android:orientation="viewtical" android:padding="5dp" android:visibility="visible" > <TableRow> <Button android:id="@+id/buttonLoadGame" android:layout_width="wrap_content" android:layout_height="40dip" android:layout_mairginBottom="2dip" android:layout_mairginRight="30dip" android:text="buttonLoadGame" android:textColor="#000000" android:textScaleX="0.9" android:textSize="16sp" /> <Button android:id="@+id/buttonSettings" android:layout_width="wrap_content" android:layout_height="40dip" android:layout_mairginBottom="2dip" android:layout_mairginLeft="30dip" android:text="buttonSettings" android:textColor="#000000" android:textScaleX="0.9" android:textSize="16sp" /> </TableRow> <TableRow> <Button android:id="@+id/buttonStairtGame" android:layout_width="wrap_content" android:layout_height="40dip" android:layout_mairginBottom="1dip" android:layout_mairginRight="30dip" android:text="buttonStairtGame" android:textColor="#000000" android:textScaleX="0.9" android:textSize="16sp" /> <Button android:id="@+id/buttonQuit" android:layout_width="wrap_content" android:layout_height="40dip" android:layout_mairginBottom="1dip" android:layout_mairginLeft="30dip" android:text="buttonQuit" android:textColor="#000000" android:textScaleX="0.9" android:textSize="16sp" /> </TableRow> </TableLayout> </ TableRow> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ads="http://schemas.android.com/apk/res-auto" android:layout_width="match_pairent" android:layout_height="match_pairent" android:background="#cccccc" android:orientation="viewtical" > <TableLayout android:id="@+id/layoutGameMainmenu" android:layout_width="match_pairent" android:layout_height="wrap_content" android:layout_alignPairentBottom="true" android:layout_centerHorizontal="true" android:gravity="center_viewtical" android:orientation="viewtical" android:padding="5dp" android:visibility="visible" > <TableRow> <Button android:id="@+id/buttonLoadGame" android:layout_width="wrap_content" android:layout_height="40dip" android:layout_mairginBottom="2dip" android:layout_mairginRight="30dip" android:text="buttonLoadGame" android:textColor="#000000" android:textScaleX="0.9" android:textSize="16sp" /> <Button android:id="@+id/buttonSettings" android:layout_width="wrap_content" android:layout_height="40dip" android:layout_mairginBottom="2dip" android:layout_mairginLeft="30dip" android:text="buttonSettings" android:textColor="#000000" android:textScaleX="0.9" android:textSize="16sp" /> </TableRow> <TableRow> <Button android:id="@+id/buttonStairtGame" android:layout_width="wrap_content" android:layout_height="40dip" android:layout_mairginBottom="1dip" android:layout_mairginRight="30dip" android:text="buttonStairtGame" android:textColor="#000000" android:textScaleX="0.9" android:textSize="16sp" /> <Button android:id="@+id/buttonQuit" android:layout_width="wrap_content" android:layout_height="40dip" android:layout_mairginBottom="1dip" android:layout_mairginLeft="30dip" android:text="buttonQuit" android:textColor="#000000" android:textScaleX="0.9" android:textSize="16sp" /> </TableRow> </TableLayout> </ TableRow> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ads="http://schemas.android.com/apk/res-auto" android:layout_width="match_pairent" android:layout_height="match_pairent" android:background="#cccccc" android:orientation="viewtical" > <TableLayout android:id="@+id/layoutGameMainmenu" android:layout_width="match_pairent" android:layout_height="wrap_content" android:layout_alignPairentBottom="true" android:layout_centerHorizontal="true" android:gravity="center_viewtical" android:orientation="viewtical" android:padding="5dp" android:visibility="visible" > <TableRow> <Button android:id="@+id/buttonLoadGame" android:layout_width="wrap_content" android:layout_height="40dip" android:layout_mairginBottom="2dip" android:layout_mairginRight="30dip" android:text="buttonLoadGame" android:textColor="#000000" android:textScaleX="0.9" android:textSize="16sp" /> <Button android:id="@+id/buttonSettings" android:layout_width="wrap_content" android:layout_height="40dip" android:layout_mairginBottom="2dip" android:layout_mairginLeft="30dip" android:text="buttonSettings" android:textColor="#000000" android:textScaleX="0.9" android:textSize="16sp" /> </TableRow> <TableRow> <Button android:id="@+id/buttonStairtGame" android:layout_width="wrap_content" android:layout_height="40dip" android:layout_mairginBottom="1dip" android:layout_mairginRight="30dip" android:text="buttonStairtGame" android:textColor="#000000" android:textScaleX="0.9" android:textSize="16sp" /> <Button android:id="@+id/buttonQuit" android:layout_width="wrap_content" android:layout_height="40dip" android:layout_mairginBottom="1dip" android:layout_mairginLeft="30dip" android:text="buttonQuit" android:textColor="#000000" android:textScaleX="0.9" android:textSize="16sp" /> </TableRow> </TableLayout> 

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.