android开发中,自定义视图属性并获取其值能显著提升代码的可读性和可维护性。本文将详细介绍如何自定义TextView属性value,并演示如何在年龄筛选场景中获取该属性值。 由于android:tag属性可能被占用,我们选择自定义属性存储年龄范围信息。
首先,在res/values/attrs.xml文件中声明自定义属性(若文件不存在,需手动创建):
<resources> <declare-styleable name="CustomTextView"> <attr name="value" format="string" /> </declare-styleable> </resources>
然后,在布局文件中使用自定义属性。app:前缀表示自定义属性:
<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:value="" style="@style/fragment_home_drawer_search_item_text"/> <TextView android:text="18-25" app:value="18-25" style="@style/fragment_home_drawer_search_item_text"/> </com.google.android.flexbox.flexboxlayout>
最后,在代码中,通过obtainStyledAttributes方法获取自定义属性值。在点击事件处理函数ageItemClickHandle中:
public void ageItemClickHandle(View view) { if (view instanceof TextView) { TextView textView = (TextView) view; TypedArray typedArray = textView.getContext().obtainStyledAttributes(textView, R.styleable.CustomTextView); String value = typedArray.getString(R.styleable.CustomTextView_value); typedArray.recycle(); // 使用获取到的value值 } }
通过以上步骤,即可自定义TextView属性并获取其值,实现灵活的年龄筛选功能。 记住在使用完TypedArray后调用recycle()方法释放资源。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END