Sintaxis para recuperar valor de recursos de estilo anidado?
Dado que DrawerLayout
es parte del cromo de una actividad de Android, un color de fondo probable para el cajón parecería ser el color de fondo de la barra de acción, por lo que coinciden. Por lo tanto, me gustaría configurar el ListView
que es el contenido del cajón para tener el mismo color de fondo que la barra de acción, y me gustaría hacer eso en el XML de diseño que define el ListView
.
Y aquí me pierdo en el laberinto de pequeños pasajes tortuosos que es el sistema de estilo Android …
- Android Holo Selected List Color del artículo
- Android: Theme.Material.Light requiere el nivel API 21 (el min actual es 8)
- ¿Cómo puedo modificar Theme.Holo.Light.Dialog para ocupar menos espacio en la pantalla?
- Android Action Bar es nulo cuando se utiliza Theme.Wallpaper
- Crear tema personalizado descargable y aplicarlo durante el tiempo de ejecución
?android:attr/
syntax te permite referir, por referencia, a un valor definido en el tema que está siendo utilizado por la actividad (por ejemplo ?android:attr/activatedBackgroundIndicator
como fondo para una fila de elemento de lista para trabajar con el Estado "activado").
Sé que android:actionBarStyle
es donde un tema apunta al estilo que se usará para android:actionBarStyle
la barra de acción en sí, y en ese estilo anidado (?), android:background
es el fondo utilizado para la barra de acción.
Lo que no sé es cómo crear un ?android:attr/
, que se aplicará a un ListView
, que extrae el fondo del estilo definido de la barra de acción.
es posible? Si es así, ¿cuál es la sintaxis?
Mi conjetura es que esto no es posible, que es porqué la muestra oficial de DrawerLayout
codifica el color de fondo …
¡Gracias!
- ¿Puede colocarse un WindowBackground debajo de la barra de estado y encima de la barra de navegación?
- Tema Día / Noche para la aplicación de Android
- Utilizar no un tema precompilado
- ¿Qué atributos de tema necesito anular para cambiar el color de resaltado azul de mis cuadros de diálogo?
- Aplicación de tema para KeyboardView
- ¿Hay un tema para Holo, a pantalla completa pero con Action Bar?
- Leer atributos de tema más reciente en la plataforma anterior
- Tema de botón incorrecto al cambiar el modo Día / Noche
No es posible desafortunadamente a través de XML.
Podría hacer lo siguiente en código (no probado, pero debería funcionar):
// Need to manually create android.styleable.ActionBar. // If you need other attributes, add them int[] android_styleable_ActionBar = { android.R.attr.background }; // Need to get resource id of style pointed to from actionBarStyle TypedValue outValue = new TypedValue(); getTheme().resolveAttribute(android.R.attr.actionBarStyle, outValue, true); // Now get action bar style values... TypedArray abStyle = getTheme().obtainStyledAttributes(outValue.resourceId, android_styleable_ActionBar); // background is the first attr in the array above so it's index is 0. Drawable bg = abStyle.getDrawable(0); abStyle.recycle();
AFAICT simplemente no es posible usar cualquier sintaxis de ?android:attr
para dirigir el fondo de la barra de acción, simplemente porque no existe tal atributo exportado en el attrs.xml relacionado . Debería agregar / definir dicho atributo en su tema personalizado, luego usar una referencia En sus estilos / diseños. P.ej:
-attrs.xml:
<declare-styleable name="CustomTheme"> <attr name="actionbarBackground" format="reference"/> </declare-styleable>
-meses.xml
<style name="CustomTheme" parent="Theme.Holo.Light"> ... <item name="actionbarBackground">@color/your_fav_color</item> <item name="android:actionBarStyle">@style/CustomActionbar</item> ... </style>
-styles.xml
... <style name="CustomActionbar" parent="@android:style/Widget.Holo.Light.ActionBar"> <item name="android:background">?attr/actionbarBackground</item> .... </style>
- Prueba de unidad MVP usando mockito con los oyentes de eventos
- Android 6: la aplicación utiliza más memoria cada vez que se inicia