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
luegovalues-v11
y finalmentevalues
. - Si el dispositivo se ejecuta en una API entre 11 y 13, el sistema cargará los
values-v11
y luego losvalues
. - 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 a14
) -
values-v11
apunta a las API entre (y se incluyen)11
y13
si está presente, de lo contrario , coincidirá con todas las versiones que comiencen con11
o más ((no se seleccionará en absoluto para las versiones inferiores a11
)) -
values
es la carpeta predeterminada y será la última en coincidir, cubriendo otros niveles de API no cubiertos por otra carpeta devalues-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. -->