Aplicación Android
Si no está utilizando bibliotecas de Android, entonces aquí es lo que puede hacer:
- Definir atributo personalizado styleable (supongo que ya has hecho eso).
- No use su prefijo de espacio de nombres en los elementos de estilo (el espacio de nombre se predetermina al espacio de nombres de la aplicación actual).
Ejemplo:
En attrs.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="testAttr" format="string"/>
</resources>
En styles.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="TestStyle" >
<item name="testAttr">asdf</item>
</style>
</resources>
Biblioteca Android
Si el atributo personalizado proviene de la Biblioteca Android, puede seguir utilizando el enfoque descrito. Teóricamente debería funcionar, porque el espacio de nombres de la Biblioteca Android es el mismo que el de la aplicación (desde la perspectiva de la herramienta aapt
durante la compilación). Pero no lo he probado yo mismo.
Si va a especificar el espacio de nombres, se mostrará un error. Hasta donde yo sé, los estilos no admiten espacios de nombres xml. Así que esto se producirá un error:
En styles.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:app="http://schemas.android.com/apk/res/app.package.name">
<style name="TestStyle" >
<item name="app:testAttr">asdf</item>
</style>
</resources>
Analizador automático por omisión es AndroidManifest
espacio de nombres de aplicación actual, aunque no se puede especificar de forma explícita este espacio de nombres.
respuesta seleccionada es incorrecto/incompleto. Puede diseñar elementos de IU personalizados en el archivo de estilos, esto lo hago yo mismo ... Consulte mi respuesta, por ejemplo – Kurru