2011-05-13 19 views
12

tengo un manifiesto androide con una actividad que quiero aplicar a los estilos de:¿Cómo agregar múltiples atributos de tema a la misma actividad en el Manifiesto de Android?

<activity android:label="@string/app_name" android:name="Language" android:theme="@android:style/Theme.NoTitleBar> 

es como se ve en este momento, pero manteniendo el atributo NoTitleBar, me gustaría añadir este atributo, así:

android:style/Theme.Light" 

Pero soy tan nuevo en Android que no puedo entenderlo.

Por favor ayuda!

+0

Wow esto es exactamente lo que estoy tratando de hacer en este momento. – coolcool1994

Respuesta

33

No puede tener más de un tema aplicado a la vez en su manifiesto.

Creo que hay un tema Theme.Light.NoTitleBar que hará lo que quiera, pero le mostraré a continuación cómo puede hacerlo fácilmente y personalizar más.

Lo que hay que hacer es crear un tema que tiene ya sea Theme.NoTitleBar o Theme.Light ya que es padre y personaliza las partes que usted quiera - en este caso la forma más fácil es crear un tema con Theme.Light ya que es padre y simplemente ocultar la barra de título (en lugar de tener el Theme.NoTitleBar como padre y luego tener que hacer que todo sea más liviano, ¡lo cual es mucho más difícil!).

Usted puede hacer esto con el siguiente código en el archivo de 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 se podría aplicar a toda su aplicación, colocándolo en el Elemento de aplicación: si aplica un estilo a una actividad individual y tiene un conjunto para toda la aplicación, entonces el estilo de la actividad individual será el que se muestra).

Eche un vistazo a Android themes.xml para obtener una lista de todas las cosas que puede personalizar en su propio tema.

También puede ver todos los Android styles para ver cómo se hacen.

+0

No tengo themes.xml en la carpeta de valores – coolcool1994

+1

Pero Theme.Light.NoTitleBar hizo los trucos. – coolcool1994

3

Necesitará al menos 2 estilos, es mejor heredar de los estilos base, p. Ej. Theme.Material variantes, o si usa appcompat entonces Theme.AppCompat variantes. En cada estilo se anulan los valores como los colores, los elementos extraíbles, etc. con valores específicos del tema.

valores/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 marco o appcompat atributos (por ejemplo colorAccent, android:textColorPrimary etc) en sus diseños. Pero si necesita sus propios atributos (por ejemplo, un dibujable con un color diferente según el tema), deberá definir custom attributes.

values ​​/ attrs.xml

<attr name="themedMenuStoryDrawable" format="reference" /> 
<attr name="themedMenuCommentDrawable" format="reference" /> 
... 

especificar valores de temas específicos para sus atributos personalizados:

valores/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, se refieren a su atributos personalizados con ?attr/ prefijo en los diseños, los 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> 

Salida my blog post para la guía completa.

+0

Theme.AppCombat es un tema incorporado en Android. +1 para una buena explicación? – sachinjain024

+0

Hola, no es parte del SDK, pero forma parte de la biblioteca de soporte: https://developer.android.com/tools/support-library/index.html – hidro

Cuestiones relacionadas