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

回到顶部