Variables en los recursos XML: pasa valores de padres a hijos
Estoy tratando de reutilizar formas primitivas y componer gran parte de mi interfaz de usuario utilizando estos elementos XML declarativos.
Cómo hacer un atributo variable de Android?
Pero no quiero crear un archivo XML separado para cada valor de atributo, y sus permutaciones, y en el proceso duplicar gran parte del trabajo.
- Crear Circular y Transparente Drawable XML Android
- Android - ¿Cómo manejar Webservice en XML?
- Cómo quitar la barra de título en android?
- No se puede crear servicio com.parse.PushService: java.lang.NullPointerException
- Anular la disposición xml del marco de android
Por ejemplo, me gustaría que el consumidor de esta forma ser capaz de definir el androide: valor de radio?
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <gradient android:startColor="#449def" android:endColor="#2f6699" android:angle="270"/> <stroke android:width="1dp" android:color="#2f6699"/> <corners android:radius="3dp"/> </shape>
¿Establecer atributo de consumir XML padre?
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/shape_box_round_blue_uniform" /> <!-- How to set the corner radius here? --> <item android:drawable="@drawable/shape_box_round_blue" /> </selector>
Soluciones?
- Si es posible, no quisiera usar ningún código Java detrás / evitar la necesidad de crear controles / clases personalizados
- El uso de recursos de dimensión puede ser una avenida fructífera?
- Selector xml de Android para diseños
- Abrir archivo XML desde res / xml en Android
- Submenú del menú del cajón de navegación
- La generación de Gradle falla debido a la entrada duplicada en strings.xml
- RecyclerView wrap_content
- ListView dentro de ScrollView con DrawerLayout
- Android cómo cambiar <item> anchura y altura
- Adaptador de llamada de reconocimiento de voz de Android
Puedes crear
Atributos de estilo
, Que creo que es lo que está buscando. Básicamente son atributos variables. Por ejemplo, puedes usar esto en tus themes.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <!-- You can define attributes here --> <attr name="button_radius" format="reference" /> </resources>
Que define una variable de referencia llamada: button_radius Esto se puede utilizar en Estilos, o en los archivos de diseño xml:
<!-- You can use them like so: --> <style name="MyApp.Theme1" parent="android:Theme.Holo.Light"> <item name="button_radius">12</item> </style> <style name="MyApp.Theme2" parent="android:Theme.Holo.Light"> <item name="button_radius">36</item> </style>
De esta manera, al cambiar el tema, puede utilizar los diferentes valores para su radio. A continuación se muestra un ejemplo no probado de cómo cambiaría su forma dibujable:
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <gradient android:startColor="#449def" android:endColor="#2f6699" android:angle="270"/> <stroke android:width="1dp" android:color="#2f6699"/> <corners android:radius="?button_radius"/> <!-- NOTE the ?button_radius--> </shape>
Los usuarios pueden simplemente aplicar un estilo diferente para usar diferentes atributos. No sé si este ejemplo responde a su pregunta completa, pero hay mucho que puede hacer declarando atributos en sus temas. Estos atributos son referencias dinámicas. Para más información sobre las posibilidades, consulte este artículo
- Cómo inflar vista desde XML en Android?
- Se detectó pérdida de memoria en las pestañas personalizadas de Chrome