我想将绑定 adepter 设置为 editText 以便它始终接受大写,即使用户键入小写然后它会自动将其转换为大写。为此,我正在使用这样的数据绑定和绑定适配器。
绑定适配器.kt
@BindingAdapter(value = ["app:alwaysCapital", "custom:holderAttrChanged"], requireAll = false)
fun setHolder(editText : EditText,text: String?, listener : InverseBindingListener) {
if (text != null) {
editText.setText(text)
editText.setSelection(text.length)
}
listener.onChange()
editText.doOnTextChanged{ _ : CharSequence?, _ : Int, _ : Int, _ : Int ->
listener.onChange()
}
}
@InverseBindingAdapter(attribute = "app:alwaysCapital", event = "custom:holderAttrChanged")
fun getHolder(editText : EditText) : String? {
return editText.text.toString().toUpperCase()
}
编辑文本 xml
<EditText
android:id="@+id/dfsc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="3"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:hint="@string/lname"
app:alwaysCapital="@={viewModel.txtName}"
android:imeOptions="actionNext"
android:inputType="text" />
在 ViewModel 中
val txtName = MutableLiveData<String>()