theme textappearance style studio apptheme android android-theme android-styles

android - textappearance - Estilos y temas sobre valores, carpetas valores-v11 y valores-v14



textappearance android (1)

Actualmente estoy trabajando en mi aplicación para basar su diseño en el tema Holo. A nivel mundial, lo que quiero hacer es trabajar, pero estoy un poco confundido acerca de la forma en que funcionan los values las carpetas, values-v11 y values-v14 .

Así que sé que:

  • values están dirigidos a la API inferior a 11
  • values-v11 está apuntando a la API entre 11 y 13
  • values-v14 está apuntando a la API superior a 13

Al principio pensé que tenía que especificar para cada carpeta todos los estilos necesarios para la aplicación, pero luego me di cuenta de que existía un tipo de sistema de herencia.

Mi problema es que estoy realmente confundido y no entiendo claramente cómo está funcionando esta herencia entre estas 3 carpetas.

Hice la siguiente prueba para ver el comportamiento en mi teléfono (ejecutado en Android 4.0, por lo que la carpeta values-v14 debería ser la que está cargada):

En values tengo un estilo para configurar en azul el color del texto:

<style name="TextMedium" parent="@android:style/TextAppearance.Medium"> <item name="android:textColor">@color/Blue</item>

En values-v11 tengo un estilo para configurar en blanco el color del texto:

<style name="TextMedium" parent="@android:style/TextAppearance.Medium"> <item name="android:textColor">@color/White</item>

En values-v14 tengo un estilo para establecer en rojo el color del texto:

<style name="TextMedium" parent="@android:style/TextAppearance.Medium"> <item name="android:textColor">@color/Red</item>

Para el primer caso anterior (cada carpeta con un color diferente), el color cargado en mi texto es rojo, lo que significa que la carpeta values-v14 tiene la prioridad.

Luego, si comento el estilo rojo de la carpeta values-v14 , el texto se vuelve blanco. ¿Eso significa que el sistema adoptará el estilo en la carpeta values-v11 incluso si el dispositivo está apuntando a la carpeta values-v14 ? Pensé que tal vez usaría la carpeta de values por defecto pero no los values-v11 .

De manera más general, mi pregunta es, ¿estas 3 carpetas funcionan como padre e hijo? Significa que:

  • Si el dispositivo se está ejecutando en una versión de API> 13, el sistema cargará values-v14 luego values-v11 y finalmente values .
  • Si el dispositivo se ejecuta en una API entre 11 y 13, el sistema cargará los values-v11 y luego los values .
  • Si el dispositivo se ejecuta en una versión de la API <11, el sistema cargará solo los values .

Si es así como funciona, ¿tiene sentido configurar el máximo de estilos en los values carpeta principal y agregar solo los específicos en v11 o v14?

Perdón por la larga pregunta, espero que esté claro, este sistema de temas / estilos solo se describe brevemente en la guía de Android y es difícil encontrar información sobre cómo funciona ...

¡Gracias por tu ayuda!


De manera más general, mi pregunta es, ¿estas 3 carpetas funcionan como padre e hijo?

Esas carpetas funcionan con un sistema coincidente "más específico", lo que significa que coincidirá con la carpeta de values nivel API más cercana (inferior):

  • values-v14 apunta a las API> = 14 (no se seleccionará en absoluto para las versiones inferiores a 14 )
  • values-v11 apunta a las API entre (y se incluyen) 11 y 13 si está presente, de lo contrario , coincidirá con todas las versiones que comiencen con 11 o más ((no se seleccionará en absoluto para las versiones inferiores a 11 ))
  • values es la carpeta predeterminada y será la última en coincidir, cubriendo otros niveles de API no cubiertos por otra carpeta de values-xx . Siempre debe (como con todas las carpetas de recursos) tener esta carpeta en su aplicación

Si es así como funciona, ¿tiene sentido configurar el máximo de estilos en los valores de la carpeta principal y agregar solo los específicos en v11 o v14?

Sí, así es como se crea la plantilla de proyecto de Android (cuando usa Create new project... ), en realidad le dice que use las carpetas de values-xx para la personalización (apariencia diferente, uso de estilos más nuevos, atributos):

<!-- in the styles.xml from the v-14 values folder: --> <!-- API 14 theme customizations can go here. -->