如何通过数据绑定设置按钮的可点击性
How to set button clickability through Databinding
我可以通过数据绑定轻松设置进度条的可见性,方法是使用如下方法设置绑定适配器:
在视图模型中:
@BindingAdapter("android:visibility")
fun setVisibility(view: View, visible: Boolean) {
view.visibility = if (visible) View.INVISIBLE else View.VISIBLE
}
@Bindable
var barProgress = ObservableField<Boolean>()
fun makeVisible(){
this.barProgress.set(true)
}
fun makeInvisible(){
this.barProgress.set(false)
}
布局中xml:
android:visibility="@{!myViewModel.barProgress}"
我可以通过这种或其他方式以同样的方式分配 android:clickable
吗?如果我要更改代码,问题在于没有适合此方法的 View 属性。尝试在 main 方法上设置 setEnabled() 或 setClickable() 不是一个选项,因为我使用的是协同程序,我认为它与之冲突。
我想我让它工作如下:
@BindingAdapter("android:clickable")
fun setClickable(view: View, clickable: Boolean) {
view.isClickable = !clickable
}
@Bindable
var clickable = ObservableField<Boolean>()
fun makeClickable(){
this.clickable.set(true)
}
fun makeUnclickable(){
this.clickable.set(false)
}
在XML中:
android:clickable="@{myViewModel.clickable}"
奖金,设置 enabled
属性:
@BindingAdapter("android:enabled")
fun setEnabled(view: View, enabled: Boolean) {
view.isEnabled = !enabled
}
@Bindable
var enabled = ObservableField<Boolean>()
fun makeEnabled(){
this.enabled.set(true)
}
fun makeDisabled(){
this.enabled.set(false)
}
并在 xml 中:
android:enabled="@{myViewModel.enabled}"
我想你可以猜到如何为 andorid:focusable
属性做到这一点。
我可以通过数据绑定轻松设置进度条的可见性,方法是使用如下方法设置绑定适配器:
在视图模型中:
@BindingAdapter("android:visibility")
fun setVisibility(view: View, visible: Boolean) {
view.visibility = if (visible) View.INVISIBLE else View.VISIBLE
}
@Bindable
var barProgress = ObservableField<Boolean>()
fun makeVisible(){
this.barProgress.set(true)
}
fun makeInvisible(){
this.barProgress.set(false)
}
布局中xml:
android:visibility="@{!myViewModel.barProgress}"
我可以通过这种或其他方式以同样的方式分配 android:clickable
吗?如果我要更改代码,问题在于没有适合此方法的 View 属性。尝试在 main 方法上设置 setEnabled() 或 setClickable() 不是一个选项,因为我使用的是协同程序,我认为它与之冲突。
我想我让它工作如下:
@BindingAdapter("android:clickable")
fun setClickable(view: View, clickable: Boolean) {
view.isClickable = !clickable
}
@Bindable
var clickable = ObservableField<Boolean>()
fun makeClickable(){
this.clickable.set(true)
}
fun makeUnclickable(){
this.clickable.set(false)
}
在XML中:
android:clickable="@{myViewModel.clickable}"
奖金,设置 enabled
属性:
@BindingAdapter("android:enabled")
fun setEnabled(view: View, enabled: Boolean) {
view.isEnabled = !enabled
}
@Bindable
var enabled = ObservableField<Boolean>()
fun makeEnabled(){
this.enabled.set(true)
}
fun makeDisabled(){
this.enabled.set(false)
}
并在 xml 中:
android:enabled="@{myViewModel.enabled}"
我想你可以猜到如何为 andorid:focusable
属性做到这一点。