Kuidas lisada kohandatud atribuute kohandatud vaatele Androidis?
sobes.tech AI
Vastus AI-lt
-
Atribuutide määratlemine
attrs.xml-s: Loome failires/values/attrs.xml(või lisame olemasolevasse). Selles määratleme<declare-styleable>oma kohandatud vaate nimega ja loetleme<attr>iga kasutaja atribuudi jaoks, märkides nende formaadi (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> -
Atribuutide kasutamine XML-is: XML-mallis, kus kasutatakse kohandatud vaadet, lisatakse määratletud atribuudid
appnimelahtriga.<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"/> -
Atribuutide lugemine View koodis: Oma View konstruktoris (tavaliselt selles, mis võtab vastu
ContextjaAttributeSet), kasutatakse klasseTypedArrayjaobtainStyledAttributesatribuutide väärtuste lugemiseks XML-ist.class MyCustomView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 ) : View(context, attrs, defStyleAttr) { // Muutujad atribuutide väärtuste salvestamiseks private var customText: String? = null private var customColor: Int = 0 private var customEnabled: Boolean = false init { // TypedArray saamine val typedArray = context.obtainStyledAttributes(attrs, R.styleable.MyCustomView, defStyleAttr, 0) try { // Atribuutide väärtuste lugemine customText = typedArray.getString(R.styleable.MyCustomView_customText) customColor = typedArray.getColor(R.styleable.MyCustomView_customColor, 0) // Vaikeväärtus customEnabled = typedArray.getBoolean(R.styleable.MyCustomView_customEnabled, false) // Vaikeväärtus // Nüüd saab kasutada customText, customColor ja customEnabled vaate seadistamiseks // Näiteks: // if (customEnabled) { /* ... */ } } finally { // Oluline! `TypedArray`-i taaskasutamine ressursside vabastamiseks typedArray.recycle() } } // ... ülejäänud vaate loogika ... }
obtainStyledAttributes meetod tagastab TypedArray-i, millest saab välja lugeda atribuutide väärtused nende indeksite järgi (mida genereerib R klass). Pärast kasutamist on oluline kutsuda recycle() ressursside vabastamiseks.