usuario una studio sirve que por para interfaz diseño código creación creacion codigo activity_main android custom-controls

una - interfaz xml android



Android: interfaz de usuario personalizada con atributos personalizados (3)

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=<someValue> />

Entonces, ¿es posible definir MyCustomValue ?

Gracias


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

<declare-styleable name=""> <attr name="myCustomValue" format="integer/boolean/whatever" /> </declare-styleable>

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 <resource> .
Me gusta esto:

<?xml version="1.0" encoding="utf-8"?> <resources> <style name="CodeFont" parent="@android:style/TextAppearance.Medium"> <item name="android:layout_width">fill_parent</item> <item name="android:layout_height">wrap_content</item> <item name="android:textColor">#00FF00</item> <item name="android:typeface">monospace</item> </style> </resources>

enlace desde el sitio web oficial


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"?> <resources> <declare-styleable name="MyCustomElement"> <attr name="distanceExample" format="dimension"/> </declare-styleable> </resources>

Básicamente, debe configurar un <declare-styleable /> 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.

<com.example.yourpackage.MyCustomElement xmlns:customNS="http://schemas.android.com/apk/res/com.example.yourpackage" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Element..." customNS:distanceExample="12dp" />

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.