Hogyan adjunk hozzá egyedi attribútumokat az Androidon egy egyedi nézethez?
sobes.tech MI
Válasz az MI-től
-
Attribútumok meghatározása az
attrs.xml-ben: Létrehozunk egyres/values/attrs.xmlfájlt (vagy hozzáadjuk a meglévőhöz). Ebben meghatározunk egy<declare-styleable>-t a saját View nevét megadva, és felsoroljuk az<attr>-okat minden egyedi attribútumhoz, megadva azok formátumát (format).<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="MyCustomView"> <attr name="customText" format="string"/> <attr name="customColor" format="color"/> <attr name="customEnabled" format="boolean"/> </declare-styleable> </resources> -
Attribútumok használata XML-ben: A layout XML-ben, ahol a saját View-t használjuk, hozzáadjuk a meghatározott attribútumokat az
appnévtér használatával.<com.example.MyCustomView android:layout_width="wrap_content" android:layout_height="wrap_content" xmlns:app="http://schemas.android.com/apk/res-auto" app:customText="Hello Custom View" app:customColor="@color/colorPrimary" app:customEnabled="true"/> -
Attribútumok olvasása a View kódban: A saját View konstruktorában (általában, amely elfogad
Context-et ésAttributeSet-et), aTypedArrayés azobtainStyledAttributesosztályokat használjuk az XML-ben megadott attribútumértékek olvasására.class MyCustomView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 ) : View(context, attrs, defStyleAttr) { // Példák az attribútumértékek tárolására private var customText: String? = null private var customColor: Int = 0 private var customEnabled: Boolean = false init { // TypedArray beszerzése az attribútumokkal val typedArray = context.obtainStyledAttributes(attrs, R.styleable.MyCustomView, defStyleAttr, 0) try { // Az attribútumértékek olvasása customText = typedArray.getString(R.styleable.MyCustomView_customText) customColor = typedArray.getColor(R.styleable.MyCustomView_customColor, 0) // Alapértelmezett érték customEnabled = typedArray.getBoolean(R.styleable.MyCustomView_customEnabled, false) // Alapértelmezett érték // Most már használhatjuk a customText, customColor és customEnabled értékeket a View konfigurálásához // Például: // if (customEnabled) { /* ... */ } } finally { // Fontos! A TypedArray újrahasznosítása a források felszabadításához typedArray.recycle() } } // ... a View többi logikája ... }
A obtainStyledAttributes metódus egy TypedArray-t ad vissza, amelyből kiolvashatók az attribútumértékek azok indexei alapján (amelyeket a R osztály generál). Használat után fontos a recycle() metódus hívása a források felszabadításához.