No se establece el tema de Android

Tengo un tema que se niega a ser aplicado a las actividades – ninguno de los estilos se aplican. Si no layout_height atributos layout_width / layout_height para <Button> también obtiene un error de ejecución, mostrando que la clase Button no está siendo aplicada.

/res/values/themes.xml :

 <?xml version="1.0" encoding="utf-8"?> <resources> <style name="Theme" parent="android:style/Theme.Black"> <item name="android:windowNoTitle">true</item> <item name="android:buttonStyle">@style/Button</item> <item name="android:windowBackground">@color/page_background_light</item> <item name="android:textAppearance">@style/TextAppearance</item> </style> </resources> 

/res/values/styles.xml :

 <?xml version="1.0" encoding="utf-8"?> <resources> <style name="TextAppearance" parent="@android:style/TextAppearance"> <item name="android:textSize">12sp</item> <item name="android:textColor">@color/darkblue</item> </style> <style name="Button" parent="@android:style/Widget.Button"> <item name="android:layout_width">fill_parent</item> <item name="android:layout_height">wrap_content</item> <!--<item name="android:textColor">#3C2F4F</item> <item name="android:textSize">20dip</item>--> </style> </resources> 

Y el ajuste de manifiesto relevante:

 <application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@style/Theme"> 

¿Cuál es el error obvio que me falta?

He estado luchando con esto también, y creo que finalmente he encontrado lo que puede haber sido el problema – tal vez es lo mismo.

Tenía el tema personalizado definido en la carpeta res\values , pero no en las carpetas values-v11 y values-v14 . Lo que creo que lo hizo de modo que en algunos dispositivos (especialmente el 2 que estaba probando con!), El tema no se pudo aplicar porque no existía.

Ahora veo las propiedades establecidas en mi tema personalizado (aplicado en el nivel de aplicación).

Tuve que definir explícitamente tema para cada <activity> .

De acuerdo con esta respuesta , parece que no es posible proporcionar layout_width y layout_height través de estilos. Mientras compila, la excepción que plantea es:

 E/AndroidRuntime(4117): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example/com.example.MainActivity}: java.lang.RuntimeException: Binary XML file line #79: You must supply a layout_width attribute. 

No estoy seguro de por qué es, pero puede haber una solución. Como sugiere esta pregunta , es posible que pueda proporcionar una referencia como el parámetro width y height.

Una vez más, mis experiencias son que Android no apoya adecuadamente proporcionando las dimensiones del widget a través de estilos.

Solo por curiosidad. Trate de cambiar el nombre de su tema a algo más como FooBar.

Va a indicar lo obvio aquí, pero asegúrese de que su botón está usando el estilo correcto.

EDIT: No estoy seguro si esto fue sólo un error tipográfico en la pregunta, pero en su tema principal que referencia estilo de Android Theme.Black incorrectamente. Su código dice:

 <style name="Theme" parent="android:style/Theme.Black"> 

Cuando debe decir:

 <style name="Theme" parent="@android:style/Theme.Black"> 

Me siento como Lint o el compilador le ladra por eso antes de ejecutar la aplicación, pero tal vez eso ayude.

  • Temas de aplicación, cambio e ImageView src basados ​​en el nombre del tema de la aplicación
  • Cómo hacer referencia a un estilo en un tema personalizado
  • ¿Cómo conseguimos el tema de una actividad?
  • ¿Por qué mi aplicación de Android no muestra el icono y el texto en ActionBar?
  • Cambiar y aplicar el tema en tiempo de ejecución en Android
  • Recurso para descargar temas / estilos de aplicación de Android?
  • Android: ¿Cómo diseñar el DatePicker?
  • Atributos de altura de ActionBarSherlock en sdk bajo
  • Android: Actividad de pantalla completa con barra de título
  • Tema de fondo con estilos y temas
  • Cambio de tema de aplicación a nivel de programación?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.