android 如何自定义视图属性和获取自定属性值?
我有一个年龄筛选的可选按钮:
<com.google.android.flexbox.FlexboxLayout style="@style/fragment_home_drawer_flexbox"
android:onClick="@{(view) -> vm.ageItemClickHandle(view)}">
<TextView
style="@style/fragment_home_drawer_search_item_text"
android:layout_marginStart="0dp"
android:text="不限"
app:value=""
/>
<TextView
style="@style/fragment_home_drawer_search_item_text"
android:text="18-25"
app:value="18-25"
/>
<TextView
style="@style/fragment_home_drawer_search_item_text"
android:text="26-30"
app:value="18-25"
/>
<TextView
style="@style/fragment_home_drawer_search_item_text"
android:text="31-35"
app:value="31-35"
/>
<TextView
style="@style/fragment_home_drawer_search_item_text"
android:text="36-40"
app:value="31-35"
/>
</com.google.android.flexbox.FlexboxLayout>
上述点击不同的文本会触发不同条件的年龄搜索。如何给 TextView 设置自定义属性?不能通过 android:tag
方式设置,因为这个可用于 findViewWithTag
方法。后续可能会用到。
回答:
attrs.xml:
<resources> <declare-styleable name="CustomTextView">
<attr name="value" format="string" />
</declare-styleable>
</resources>
布局文件:
<com.google.android.flexbox.FlexboxLayout style="@style/fragment_home_drawer_flexbox"
android:onClick="@{(view) -> vm.ageItemClickHandle(view)}">
<TextView
style="@style/fragment_home_drawer_search_item_text"
android:layout_marginStart="0dp"
android:text="不限"
app:value=""
/>
<TextView
style="@style/fragment_home_drawer_search_item_text"
android:text="18-25"
app:value="18-25"
/>
</com.google.android.flexbox.FlexboxLayout>
获取自定义属性值:
public void ageItemClickHandle(View view) { if (view instanceof TextView) {
TextView textView = (TextView) view;
TypedArray typedArray = getContext().obtainStyledAttributes(textView, R.styleable.CustomTextView);
String value = typedArray.getString(R.styleable.CustomTextView_value);
typedArray.recycle();
// ...
}
}
以上是 android 如何自定义视图属性和获取自定属性值? 的全部内容, 来源链接: utcz.com/p/945307.html