Middle
Androidda moslashtirilgan ko'rinish uchun moslashtirilgan atributlarni qanday qo'shish mumkin?
sobes.tech AI
AIdan javob
-
attrs.xmlfaylida atributlarning ta'rifi:res/values/attrs.xmlfayli yaratiladi (yoki mavjud faylga qo'shiladi). Unda<declare-styleable>ni maxsus View nomi bilan belgilash va har bir maxsus atribut uchun<attr>ro'yxatini tuzish, ularning formatini (format) ko'rsatish.<?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 loyihasida atributlardan foydalanish: Maxsus View ishlatiladigan XML loyihasida,
appnomlar maydonidan foydalanib, muayyan atributlar qo'shiladi.<com.example.MyCustomView android:layout_width="wrap_content" android:layout_height="wrap_content" xmlns:app="http://schemas.android.com/apk/res-auto" app:customText="Salom Maxsus View" app:customColor="@color/colorPrimary" app:customEnabled="true"/> -
View kodida atributlarni o'qish: Maxsus View konstruktorida (odatda
ContextvaAttributeSetqabul qiladigan)TypedArrayvaobtainStyledAttributessinflaridan foydalanib, XMLda belgilangan atributlarning qiymatlari o'qiladi.class MyCustomView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 ) : View(context, attrs, defStyleAttr) { // Atributlarning qiymatlarini saqlash uchun o'zgaruvchilar private var customText: String? = null private var customColor: Int = 0 private var customEnabled: Boolean = false init { // Atributlar bilan TypedArray olish val typedArray = context.obtainStyledAttributes(attrs, R.styleable.MyCustomView, defStyleAttr, 0) try { // Atributlarning qiymatlarini o'qish customText = typedArray.getString(R.styleable.MyCustomView_customText) customColor = typedArray.getColor(R.styleable.MyCustomView_customColor, 0) // Standart qiymat customEnabled = typedArray.getBoolean(R.styleable.MyCustomView_customEnabled, false) // Standart qiymat // Endi customText, customColor va customEnabled ni View ni sozlash uchun ishlatish mumkin // Masalan: // if (customEnabled) { /* ... */ } } finally { // Resurslarni bo'shatish uchun recycle() chaqirish muhim typedArray.recycle() } } // ... qolgan View logikasi ... }