android: ¿Cómo puedo definir colores personalizados, dibujables, etc. en temas?

Espero poder explicar lo que busco. En esencia, mis usuarios me han pedido que permita diferentes apariencias en mi aplicación, lo que espero poder hacer con los temas.

Esperaba poder hacer algo como esto:

<style name="NewTheme" parent="android:Theme.Dark">
  <item name="labelColor">#f90</item>
  <item name="buttonColor">#fff</item>
  <item name="buttonBg">@drawable/button</item>
</style>
<style name="OldTheme" parent="android:Theme.Dark">
  <item name="labelColor">#fa0</item>
  <item name="buttonColor">#88f</item>
  <item name="buttonBg">@drawable/button_old</item>
</style>

Y luego haga referencia a estos valores en mi styles.xml:

<style name="labelStyle">
  <item name="android:textColor>@labelColor</item>
</style>
<style name="buttonStyle">
  <item name="android:textcolor">@buttonColor</item>
  <item name="android:background">@buttonBg</item>
</style>

Sé que esta sintaxis es incorrecta, pero ¿cuál podría ser la sintaxis correcta? Básicamente, quiero crear conjuntos de atributos (color, fondo, un par de cosas más) y seleccionarlos según el tema.

preguntado el 11 de mayo de 12 a las 04:05

¿Por qué no crear un archivo colors.xml, agregarle todos sus conjuntos de colores y definir sus estilos individuales haciendo referencia a sus colores desde el XML? Eso lo que siempre me ha funcionado. -

Gracias a todos por su ayuda. La respuesta corta resultó ser que necesitaba definir mis metavalores en attrs.xml, por ejemplo, " "-

Siddharth, podría poner mis colores en colors.xml, pero ¿cómo los cambiaría según el tema? -

@EdwardFalk ¿Cómo puedo obtener labelColor en mi actividad? Puedo obtener los colores dentro de colors.xml usando la siguiente línea: getResources().getColor(R.id.labelColor); Pero, ¿cómo obtendré este color si está definido en el archivo attr.xml? -

1 Respuestas

Para trabajar con temas y estilos en Android tienes que:

  1. Defina uno o más temas en themes.xml y establezca las definiciones de sus estilos allí.

  2. Defina atributos personalizados, también conocidos como estilos personalizados, en attrs.xml.

  3. Describa cuáles son los valores de sus estilos personalizados en styles.xml.

  4. En sus archivos de diseño, asigne a sus vistas un atributo de estilo, que tiene un nombre de estilo personalizado como sus valores.

  5. Establece el tema de tu aplicación o actividad en AndroidManifest.xml o en el onCreate() de la actividad. Esto se hace llamando a setTheme() en el método onCreate() de la actividad, antes de cualquier llamada a setContentView().

  6. Para cambiar el tema, simplemente necesita reiniciar su actividad.

enter image description here

te aconsejo que mires esto tutoriales se ocupa de todo lo que un programador quiere trabajar en temas de Android (color de texto, formato de texto, lista de estado dibujable, etc.)

contestado el 11 de mayo de 12 a las 05:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.