Ako pridať vlastnosti na vlastný pohľad v Android?
sobes.tech AI
Odpoveď od AI
-
Definícia atribútov v
attrs.xml: Vytvoríme súborres/values/attrs.xml(alebo ho pridáme do existujúceho). V ňom sa definuje<declare-styleable>s názvom vlastného View a vypíšu sa<attr>pre každý vlastný atribút, uvádzajúc ich formá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> -
Použitie atribútov v XML: V rozložení XML, kde sa používa vlastný View, sa pridajú definované atribúty s využitím priestoru mien
app.<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"/> -
Čítanie atribútov v kóde View: V konštruktore vlastného View (zvyčajne v tom, ktorý prijíma
ContextaAttributeSet), sa používajú triedyTypedArrayaobtainStyledAttributesna načítanie hodnôt atribútov uvedených v XML.class MyCustomView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 ) : View(context, attrs, defStyleAttr) { // Príklady premenných na uloženie hodnôt atribútov private var customText: String? = null private var customColor: Int = 0 private var customEnabled: Boolean = false init { // Získanie TypedArray s atribútmi val typedArray = context.obtainStyledAttributes(attrs, R.styleable.MyCustomView, defStyleAttr, 0) try { // Čítanie hodnôt atribútov customText = typedArray.getString(R.styleable.MyCustomView_customText) customColor = typedArray.getColor(R.styleable.MyCustomView_customColor, 0) // Predvolená hodnota customEnabled = typedArray.getBoolean(R.styleable.MyCustomView_customEnabled, false) // Predvolená hodnota // Teraz môžete použiť customText, customColor a customEnabled na nastavenie View // Napríklad: // if (customEnabled) { /* ... */ } } finally { // Dôležité! Recyklácia TypedArray na uvoľnenie zdrojov typedArray.recycle() } } // ... zvyšok logiky View ... }
Metóda obtainStyledAttributes vracia TypedArray, z ktorého môžete získať hodnoty atribútov podľa ich indexov (generovaných triedou R). Po použití je potrebné volať recycle() na uvoľnenie zdrojov.