2010-11-24 10 views
7

Tengo un conjunto de parámetros personalizados de diseño de Android definidos en attrs.xml. Ahora me gustaría usar algunas etiquetas en mi archivo styles.xml.Parámetro attrs personalizado utilizado en styles.xml

En el momento en que sale este error:

error: Error: No resource found that matches the given name: attr 'custom:tag' 

He tratado declarando espacio de nombres XML personalizado de la siguiente manera:

<resources 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:custom="http://schemas.android.com/apk/res/com.my.project" 
> 

la esperanza, que la misma lógica utilizada en todas las declaraciones de diseño se puede aplicar aquí, pero sin éxito.

+0

por favor, puesto que el código está en styles.xml – dira

+0

'< nombre del elemento = "personalizado: etiqueta"> algún_valor ' –

Respuesta

14

El mecanismo de espacio de nombres XML se utiliza para etiquetas y atributos de espacios de nombre. Cuando se define un estilo como este:

<?xml version="1.0" encoding="utf-8"?> 
<resources 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:custom="http://schemas.android.com/apk/res/com.my.project"> 

    <style name="my_style"> <item name="custom:tag">some_value</item> </style> 

</resources> 

usted está tratando de aplicar los espacios de nombre XML a un valor de atributo , que no va a funcionar. En este caso, se debe especificar el nombre del paquete directamente como aquí:

<style name="my_style"> <item name="com.my.project:tag">some_value</item> </style> 

Ahora Android será capaz de resolver donde se define el atributo.

+0

bien, ¿qué pasa si hay algunas etiquetas con el mismo nombre en diferentes espacios de nombres? –

+0

Esa es una muy buena pregunta. Después de una investigación más profunda, me di cuenta de que mi respuesta anterior estaba incompleta. Consulte la respuesta actualizada. –

+0

y según entendí, ¿debe hacer referencia al espacio de nombres en el diseño xml? eso funciona solo para mí en este caso –

0

Usted puede utilizar el enlace

xmlns: app = "http://schemas.android.com/apk/res-auto

y definir el prefijo para cada etiqueta como aplicación

Cuestiones relacionadas