Sé que es posible crear un elemento de IU personalizado (a través de View o una extensión de elemento de IU específica). Pero, ¿es posible definir nuevas propiedades o atributos para los elementos de la interfaz de usuario recién creados (me refiero a no heredados, pero completamente 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=<someValue>
/>
Entonces, ¿es posible definir MyCustomValue ?
Gracias
android
custom-controls
Waypoint
fuente
fuente
Respuestas:
Si. Breve guía:
1. Cree un atributo XML
Cree un nuevo archivo XML dentro
/res/values/attrs.xml
, con el atributo y su tipoBásicamente, debe configurar uno
<declare-styleable />
para su vista que contenga todos sus atributos personalizados (aquí solo uno). Nunca encontré una lista completa de posibles tipos, así que supongo que debes buscar en la fuente uno. Los tipos que conozco son referencia (a otro recurso), color, booleano, dimensión, flotante, entero y cadena . Son bastante autoexplicativos2. Utilice los atributos en su 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 te pasan
Modifique el constructor de su vista personalizada para analizar los valores.
distanceExample
es una variable miembro privada en este ejemplo.TypedArray
Tengo muchas otras cosas para analizar otros tipos de valores.Y eso es. Utilice el valor analizado en su
View
para modificarlo, por ejemplo, úseloonDraw()
para cambiar el aspecto en consecuencia.fuente
http://schemas.android.com/apk/res-auto
al declarar el espacio de nombres personalizadoString initialText = attrs.getAttributeValue("http://schemas.android.com/apk/res-auto", "initialText");
donde attr es el AttributeSet que se pasa en el constructor y 'initialText' es su nombre de atributo personalizadoEn su carpeta res / values, cree attr.xml. Allí puedes definir tus atributos:
Cuando desee usarlo en su archivo de diseño, debe agregar
y luego puedes usar el valor con
customname:myCustomValue=""
fuente
Si puedes, solo usa la
<resource>
etiqueta.Me gusta esto:
enlace del sitio web oficial
fuente