¿Cómo agregar atributos de varios temas a la misma actividad en el manifiesto de Android?
Tengo un manifiesto android con una actividad que quiero aplicar a los estilos a:
<activity android:label="@string/app_name" android:name="Language" android:theme="@android:style/Theme.NoTitleBar>
Es cómo se ve ahora, pero al mantener el atributo NoTitleBar, me gustaría añadir este atributo también:
- Cómo cambiar el tema de otro recurso de la aplicación en android?
- Error al agregar tema personalizado a la aplicación
- Color del selector de lista de Android 4.4 Kit Kat
- Temas aparentemente ignorados en ICS
- Tema de DatePickerDialog de Android 6.0
android:style/Theme.Light"
Pero soy tan nuevo en Android que no puedo entenderlo.
¡Por favor ayuda!
- ¿Puedo configurar los estilos personalizados globales de aplicaciones para los widgets de Android-support-design?
- Cómo cambiar el color de texto del elemento de menú desbordamiento a un color diferente mediante el tema de la barra de acción de Sherlock
- ActionBarSherlock apilado barra de acción estilo problema
- Android: ¿Cómo diseñar el DatePicker?
- No se puede hacer referencia al tema Holo desde valores-v11 / themes.xml
- El ajuste textColor de un tema falla sólo en HTC Desire HD
- LinearLayout no establece el atributo layout_height requerido
- AppCompat ActionBar tema giratorio desplegable
Usted no puede tener más de un tema aplicado al mismo tiempo en su manifiesto.
Creo que hay un tema Theme.Light.NoTitleBar
que hará lo que quieras – pero voy a mostrar a continuación cómo se puede hacer esto fácilmente y personalizar más.
Lo que tienes que hacer es crear un tema que tiene Theme.NoTitleBar
o Theme.Light
como es padre y personaliza los bits que desea – en este caso la manera más fácil es crear un tema con Theme.Light
como es padre y sólo Ocultar la barra de título (en lugar de tener la Theme.NoTitleBar
como el padre y luego tienen que hacer que todo luz que es mucho más difícil!).
Puede hacer esto con el siguiente código en su archivo themes.xml
en la carpeta values
:
<?xml version="1.0" encoding="utf-8"?> <resources> <!-- use the Android Light theme as the base for our own theme --> <style name="MySuperTheme" parent="@android:style/Theme.Light"> <!-- hide the Window Title --> <item name="android:windowNoTitle">true</item> <!-- You could change the scrollbar, checkbox style, anything! --> </style> </resources>
A continuación, utilice android:theme="@style/MySuperTheme"
para su actividad (o incluso podría aplicarla a toda la aplicación colocándola en el elemento de aplicación si aplica un estilo a una actividad individual y tiene un conjunto para la actividad Toda la aplicación, así como el estilo de la actividad individual será el que se muestra).
Echa un vistazo al tema de Android themes.xml para obtener una lista de todas las cosas que puedes personalizar en tu propio tema.
También puede ver todos los estilos de Android para ver cómo se hacen.
Necesitará al menos 2 estilos, la mejor herencia de los estilos de base, por ejemplo, las variantes de Theme.Material
o, si utiliza appcompat
, variantes Theme.AppCompat
. En cada estilo reemplazan los valores como colores, dibujos, etc. con valores específicos del tema.
Values / styles.xml
<style name="AppTheme" parent="Theme.AppCompat.Light"> <!-- original theme attributes --> ... <item name="android:textColorPrimary">#FFFFFF</item> </style> <style name="AppTheme.Dark" parent="Theme.AppCompat"> <!-- alternative theme attributes --> ... <item name="android:textColorPrimary">#000000</item> </style>
Esto será suficiente si sólo utiliza atributos de framework o appcompat
(por ejemplo, colorAccent
, android:textColorPrimary
etc.) en sus diseños. Pero si usted necesita sus propios atributos (por ejemplo, un dibujable con color que es diferente por tema), entonces tendrá que definir los atributos personalizados .
Valores / attrs.xml
<attr name="themedMenuStoryDrawable" format="reference" /> <attr name="themedMenuCommentDrawable" format="reference" /> ...
Especifique los valores específicos del tema para sus atributos personalizados:
Values / styles.xml
<style name="AppTheme" parent="Theme.AppCompat.Light"> <!-- original theme attributes --> ... <item name="themedMenuStoryDrawable">@drawable/ic_subject_white_24dp</item> <item name="themedMenuCommentDrawable">@drawable/ic_mode_comment_white_24dp</item> </style> <style name="AppTheme.Dark" parent="Theme.AppCompat"> <!-- alternative theme attributes --> ... <item name="themedMenuStoryDrawable">@drawable/ic_subject_black_24dp</item> <item name="themedMenuCommentDrawable">@drawable/ic_mode_comment_black_24dp</item> </style>
A continuación, consulte sus atributos personalizados con ?attr/
prefijo en diseños, menús, etc:
Menu / my_menu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@id/menu_comment" android:icon="?attr/themedMenuCommentDrawable" /> <item android:id="@id/menu_story" android:icon="?attr/themedMenuStoryDrawable" /> </menu>
Echa un vistazo a mi blog para obtener la guía completa.
- Android 2.2: reiniciar el dispositivo mediante programación
- Por qué la convención de denominación extraña de "AlertDialog.Builder" en lugar de "AlertDialogBuilder" en Android