Enable/Disable 来自 ViewModel 的登录按钮
Enable/Disable login button from ViewModel
伙计们,我的登录页面有 2 个编辑文本字段(用户名、密码)和 1 个按钮(提交)
我想在编写的内容都是 editText 时启用提交按钮。
我创建了两个 LiveData 变量
val _userName = MutableLiveData<String>()
val userName: LiveData<String>
get() = _userName
val _password = MutableLiveData<String>()
val password: LiveData<String>
get() = _password
这是我在 xml
中的提交按钮
<com.google.android.material.button.MaterialButton
android:id="@+id/uSubmit"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginTop="80dp"
android:text="@string/log_in_button_text"
android:enabled="@{authViewModel.isSubmitButtonEnabled()}"
android:onClick="@{_ -> authViewModel.uUserLogin()}"
android:clickable="false"
app:layout_constraintEnd_toEndOf="@+id/passwordInputLayout"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="@+id/passwordInputLayout"
app:layout_constraintTop_toBottomOf="@+id/passwordInputLayout" />
我尝试在 viewModel 中编写此代码以在用户名字段中写入内容时启用按钮
var isSubmitButtonEnabled = (Transformations.map(userName) {
it.isNotEmpty()
})
这很好用。现在我想在 userName 和 password 变量中都写入内容时启用按钮。我该怎么做?
不需要使用viewmodel
来实现。您只需使用 xml
+ databinding
即可。
<com.google.android.material.button.MaterialButton
android:id="@+id/uSubmit"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="@string/log_in_button_text"
android:enabled="@{!PASSWORD_EDITTEXT_ID_IN_CAMEL_CASE.text.toString().isEmpty() && !USERNAME_EDITTEXT_ID_IN_CAMEL_CASE.text.toString().isEmpty()}"
... />
伙计们,我的登录页面有 2 个编辑文本字段(用户名、密码)和 1 个按钮(提交)
我想在编写的内容都是 editText 时启用提交按钮。
我创建了两个 LiveData 变量
val _userName = MutableLiveData<String>()
val userName: LiveData<String>
get() = _userName
val _password = MutableLiveData<String>()
val password: LiveData<String>
get() = _password
这是我在 xml
中的提交按钮<com.google.android.material.button.MaterialButton
android:id="@+id/uSubmit"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginTop="80dp"
android:text="@string/log_in_button_text"
android:enabled="@{authViewModel.isSubmitButtonEnabled()}"
android:onClick="@{_ -> authViewModel.uUserLogin()}"
android:clickable="false"
app:layout_constraintEnd_toEndOf="@+id/passwordInputLayout"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="@+id/passwordInputLayout"
app:layout_constraintTop_toBottomOf="@+id/passwordInputLayout" />
我尝试在 viewModel 中编写此代码以在用户名字段中写入内容时启用按钮
var isSubmitButtonEnabled = (Transformations.map(userName) {
it.isNotEmpty()
})
这很好用。现在我想在 userName 和 password 变量中都写入内容时启用按钮。我该怎么做?
不需要使用viewmodel
来实现。您只需使用 xml
+ databinding
即可。
<com.google.android.material.button.MaterialButton
android:id="@+id/uSubmit"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="@string/log_in_button_text"
android:enabled="@{!PASSWORD_EDITTEXT_ID_IN_CAMEL_CASE.text.toString().isEmpty() && !USERNAME_EDITTEXT_ID_IN_CAMEL_CASE.text.toString().isEmpty()}"
... />