Android: interfaz de usuario personalizada con atributos personalizados

Sé que es posible crear un elemento de IU personalizado (a través de la vista o la extensión de elemento de IU específico). Pero, ¿es posible definir nuevas propiedades o atributos para los elementos de la interfaz de usuario recién creados (es decir, no heredados, pero nuevos para definir un comportamiento específico que no puedo manejar con propiedades o atributos predeterminados)?

por ejemplo, elemento mi elemento personalizado:

<com.tryout.myCustomElement android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Element..." android:myCustomValue= /> 

Entonces, ¿es posible definir MyCustomValue ?

Gracias

Sí. Guía breve:

1. Crea un atributo XML

Cree un nuevo archivo XML dentro de /res/values/attrs.xml , con el atributo y su tipo

 < ?xml version="1.0" encoding="UTF-8"?>      

Básicamente, debe configurar un para su vista que contenga todos sus atributos personalizados (aquí solo uno). Nunca encontré una lista completa de tipos posibles, por lo que debes buscar la fuente para uno, supongo. Los tipos que conozco son referencia (a otro recurso), color, booleano, dimensión, flotante, entero y cadena . Son bastante autoexplicativos

2. Usa los atributos en tu diseño

Eso funciona de la misma manera que lo hizo anteriormente, con una excepción. Su atributo personalizado necesita su propio espacio de nombres XML.

  

Muy claro.

3. Haz uso de los valores que obtienes

Modifique el constructor de su vista personalizada para analizar los valores.

 public MyCustomElement(Context context, AttributeSet attrs) { super(context, attrs); TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.MyCustomElement, 0, 0); try { distanceExample = ta.getDimension(R.styleable.MyCustomElement_distanceExample, 100.0f); } finally { ta.recycle(); } // ... } 

distanceExample es una variable de miembro privada en este ejemplo. TypedArray tiene muchas otras cosas para analizar otros tipos de valores.

Y eso es. Use el valor analizado en su View para modificarlo, por ejemplo, onDraw() en onDraw() para cambiar el aspecto en consecuencia.

En su carpeta res / values, cree attr.xml. Allí puedes definir tus atributos:

    

Cuando quiera usarlo en su archivo de diseño, debe agregar

 xmlns:customname="http://schemas.android.com/apk/res/your.package.name" 

y luego puedes usar el valor con customname:myCustomValue=""

Sí, puede. Solo use la etiqueta .
Me gusta esto:

 < ?xml version="1.0" encoding="utf-8"?>    

enlace desde el sitio web oficial