android開發(fā)中,常常需要為視圖添加自定義屬性以存儲數(shù)據(jù)或控制視圖行為。本文將詳細(xì)講解如何自定義TextView屬性,并獲取其值,從而避免在年齡篩選功能中使用android:tag屬性。
開發(fā)者希望為年齡篩選按鈕(多個TextView組成)添加自定義屬性,以便在點擊事件中獲取每個TextView對應(yīng)的年齡范圍。為避免android:tag屬性的沖突,我們采用自定義屬性的方法。
首先,在attrs.xml文件中聲明自定義屬性:
<resources> <declare-styleable name="CustomTextView"> <attr format="string" name="ageRange" /> </declare-styleable> </resources>
這行代碼聲明了一個名為CustomTextView的可樣式化屬性集合,包含一個名為ageRange的字符串類型屬性,用于存儲年齡范圍。
接下來,在布局文件中使用自定義屬性:
<com.google.android.flexbox.flexboxlayout android:onClick="@{(view) -> vm.ageItemClickHandle(view)}" style="@style/fragment_home_drawer_flexbox"> <TextView android:layout_marginStart="0dp" android:text="不限" app:ageRange="" style="@style/fragment_home_drawer_search_item_text" /> <TextView android:text="18-25" app:ageRange="18-25" style="@style/fragment_home_drawer_search_item_text" /> </com.google.android.flexbox.flexboxlayout>
app:ageRange表示我們自定義的屬性。每個TextView都通過app:ageRange設(shè)置了對應(yīng)的年齡范圍。
最后,在點擊事件處理方法中,使用obtainStyledAttributes方法獲取自定義屬性的值:
public void ageItemClickHandle(View view) { if (view instanceof TextView) { TextView textView = (TextView) view; TypedArray typedArray = textView.getContext().obtainStyledAttributes(textView, R.styleable.CustomTextView); String ageRange = typedArray.getString(R.styleable.CustomTextView_ageRange); typedArray.recycle(); // ... 使用 ageRange 進(jìn)行年齡篩選操作 ... } }
代碼首先判斷點擊視圖是否為TextView,然后使用obtainStyledAttributes獲取CustomTextView屬性集合,并通過getString方法獲取ageRange屬性值。最后,調(diào)用recycle()方法回收資源。 這樣就成功獲取了自定義屬性值,實現(xiàn)了年齡篩選功能,并避免了使用android:tag屬性。
? 版權(quán)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載。
THE END