Android MaterialButton Set Check in XML for DataBinding
Posted
技术标签:
【中文标题】Android MaterialButton Set Check in XML for DataBinding【英文标题】: 【发布时间】:2021-03-13 23:15:30 【问题描述】:我在MaterialButtonToggleGroup
中使用MaterialButton
:
<com.google.android.material.button.MaterialButtonToggleGroup
android:id="@+id/majors_toggleGroup"
android:layout_
android:layout_
android:layout_marginTop="8dp">
<com.google.android.material.button.MaterialButton
android:id="@+id/cs_button"
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
android:layout_
android:layout_
android:checked="true" //doesn't work
android:text="CS" />
...
arrtribute android:checked
不起作用,我可以在Activity
或Fragment
中使用setCheck()
,但要使用DataBniding,我必须使用XML 属性。有什么帮助吗?
【问题讨论】:
能不能换成app:checked
看看
@Zain 它无法编译。
【参考方案1】:
最后,我必须使用BindingAdapter
函数来实现这个功能。
1.创建BindingAdapter
函数:
object DataBindingUtil
@BindingAdapter("checkedIndexes") //custom attribute
@JvmStatic
fun setChecked(toggleGroup: MaterialButtonToggleGroup, checkedIndexes: List<Int>)
checkedIndexes.forEach
(toggleGroup.getChildAt(it) as MaterialButton).isChecked = true
2。申请MaterialButtonToggleGroup
:
<com.google.android.material.button.MaterialButtonToggleGroup
android:id="@+id/majors_toggleGroup"
android:layout_
android:layout_
android:layout_marginTop="8dp"
app:checkedIndexes="@viewModel.majorIndexes"> //here, multi-selection for now
【讨论】:
【参考方案2】:要将MaterialButton
的初始状态设置为一组按钮中默认选中的按钮,您可以通过在MaterialButtonToggleGroup
中引用app:checkedButton
中的按钮ID 来完成此操作
所以,在你的代码中:
<com.google.android.material.button.MaterialButtonToggleGroup
android:id="@+id/majors_toggleGroup"
android:layout_
android:layout_
app:checkedButton="@+id/cs_button"
android:layout_marginTop="8dp">
<com.google.android.material.button.MaterialButton
android:id="@+id/cs_button"
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
android:layout_
android:layout_
android:text="CS" />
...
您也可以查看documentation。
【讨论】:
感谢您的回答,但这是一种“硬代码”,不太适合我的情况。以上是关于Android MaterialButton Set Check in XML for DataBinding的主要内容,如果未能解决你的问题,请参考以下文章
Android MaterialButton使用详解,告别shapeselector
Android MaterialButton使用详解,告别shapeselector
如何以编程方式将背景颜色从 android.support.design 更改为 MaterialButton
如何在kotlin android的MaterialButton中获取背景颜色