Middle
Android-də xüsusi görünüş üçün xüsusi atributlar necə əlavə etmək olar?
sobes.tech Süni İntellekt
AI-dan cavab
-
attrs.xmlfaylında atributların təyini:res/values/attrs.xmlfaylı yaradılır (və ya mövcud olan fayla əlavə olunur). Bu faylda<declare-styleable>xüsusi View-un adı ilə təyin edilir və hər bir xüsusi atribut üçün<attr>siyahıya alınır, onların formatı (format) göstərilir.<?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> -
XML-də atributların istifadəsi: Xüsusi View istifadə olunan XML layoutda,
appad sahəsindən istifadə edilərək müəyyən atributlar əlavə olunur.<com.example.MyCustomView android:layout_width="wrap_content" android:layout_height="wrap_content" xmlns:app="http://schemas.android.com/apk/res-auto" app:customText="Salam Xüsusi View" app:customColor="@color/colorPrimary" app:customEnabled="true"/> -
View kodunda atributların oxunması: Xüsusi View-un konstruktorunda (adətən
ContextvəAttributeSetqəbul edən)TypedArrayvəobtainStyledAttributessinifləri istifadə edilərək XML-də göstərilən atributların dəyərləri oxunur.class MyCustomView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 ) : View(context, attrs, defStyleAttr) { // Atributların dəyərlərini saxlamaq üçün dəyişənlər private var customText: String? = null private var customColor: Int = 0 private var customEnabled: Boolean = false init { // Atributlarla TypedArray əldə etmək val typedArray = context.obtainStyledAttributes(attrs, R.styleable.MyCustomView, defStyleAttr, 0) try { // Atributların dəyərlərinin oxunması customText = typedArray.getString(R.styleable.MyCustomView_customText) customColor = typedArray.getColor(R.styleable.MyCustomView_customColor, 0) // Standart dəyər customEnabled = typedArray.getBoolean(R.styleable.MyCustomView_customEnabled, false) // Standart dəyər // İndi customText, customColor və customEnabled istifadə edilə bilər // Məsələn: // if (customEnabled) { /* ... */ } } finally { // Resursların azad olunması üçün recycle() çağırmaq vacibdir typedArray.recycle() } } // ... digər View loqikası ... }