android - buddha - recetas de bowls almuerzo
Sabores de Android con diferentes temas básicos (2)
Tengo un proyecto de Android con múltiples sabores en los que estoy trabajando.
Esto funciona bien y puedo personalizar elementos de la aplicación como colores y recursos de cadena.
Quiero hacerlo para que algunos de los sabores se basen en el tema ligero de AppCompat y algunos en el tema oscuro de AppCompat.
Sé que podría hacer esto repitiendo todos los <items>
en mi estilo y en cada configuración de sabor el tema para apuntar a cada uno en un manifiesto personalizado para cada aplicación, pero eso parece excesivo.
¿Hay alguna manera fácil de configurar un tema como tal?
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<item name="colorPrimary">@color/primary_colour_tone1</item>
...lots more settings
</style>
Pero, en lugar de apuntar directamente a Theme.AppCompat.NoActionBar, apunte a una referencia que en cada compilación de gradle se puede establecer de forma diferente.
Entonces algo así como:
<style name="AppTheme" parent="**Theme reference here**">
<item name="colorPrimary">@color/primary_colour_tone1</item>
...lots more settings
</style>
He intentado usar cosas como @ string / theme_name, pero eso no funciona, ¿hay una manera simple de hacer esto?
Puede definir los sourceSets
para recursos comunes (también fuentes) para uno o más sabores, lo que significa que no tiene que repetir todos los recursos para todos los sabores.
Por ejemplo, tienes 3 sabores. flavor1
y flavor2
usa el mismo tema pero flavor3
. Luego puede definir un conjunto de fuentes adicionales para recursos comunes, como commonA
(para flavor1, flavor2) y commonB
(para flavor3):
...
android {
...
productFlavors {
flavor1{
}
flavor2{
}
flavor3{
}
}
sourceSets.flavor1{
res.srcDirs = [''res'', ''src/commonA/res'']
}
sourceSets.flavor2{
res.srcDirs = [''res'', ''src/commonA/res'']
}
sourceSets.flavor3{
res.srcDirs = [''res'', ''src/commonB/res'']
}
}
También debe crear las carpetas src/commanA
y src/commonB
luego poner sus recursos comunes en sus carpetas de res
.
una mejor forma de crear un estilo base, que contenga los valores predeterminados, luego en el estilo de fuente principal y ahora amplíe el estilo (pero probablemente no haga nada). En el sabor, puede extenderlo y anular lo que necesita.