禁用和重新启用EditText字段:重新启用它后,光标和键盘不会重新出现

时间:2018-09-03 14:42:00

标签: java android

我正在使用用户名和密码设置登录活动。我想在应用程序尝试将用户登录到系统时禁用用户名和密码编辑文本字段。

    signInButton.setOnClickListener(view -> {

    valueAnimator.start();

    loginView.setEnabled(false);
    loginView.setFocusable(false);
    loginView.clearFocus();
    passwordView.setEnabled(false);
    passwordView.setFocusable(false);
    passwordView.clearFocus();

如果登录失败或失败,我想重新启用/激活编辑文本字段。我已经按照说明中的几个类似问题进行了操作,但是每当我尝试再次允许字段可编辑时,光标和键盘就不会再出现。我可以长按这些字段,光标会出现,但不允许任何编辑或更改,而无需退出并返回应用程序。

                passwordView.clearFocus();
                loginView.clearFocus();

                loginView.setEnabled(true);
               // loginView.setFocusable(true);
                loginView.setClickable(true);
                loginView.isFocusableInTouchMode();

                passwordView.setEnabled(true);
                // passwordView.setFocusable(true);
                passwordView.setClickable(true);
                passwordView.isFocusableInTouchMode();

                loginView.setCursorVisible(true);
                passwordView.setCursorVisible(true);
                loginView.requestFocus();

<EditText
        android:id="@+id/login"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/prompt_login"
        android:focusable="true"/>

    <EditText
        android:id="@+id/password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/prompt_password"
        android:focusable="true"
        android:inputType="textPassword"
        android:visibility="gone" />

当前使用Android Studio 3.1.4和

compileSdkVersion 28
defaultConfig {
    applicationId "co.***.app"
    minSdkVersion 21
    targetSdkVersion 27

2 个答案:

答案 0 :(得分:0)

您可以使用setEnabled(false)禁用editText字段,并使用setEnabled(true)启用editText字段。

如果登录失败或失败,则可以再次启用编辑文本字段,具体取决于您的响应。

无需使用其他属性或方法,只能使用setEnabled(false) / setEnabled(true)

答案 1 :(得分:0)

如果您在按下singInButton时使用此代码:

 Button singInButton = findViewById(R.id.button);
        singInButton.setOnClickListener(view -> {

            loginView.setEnabled(false);
            loginView.clearFocus();
            passwordView.setEnabled(false);
            passwordView.clearFocus();


         });

然后在发生错误时执行此操作:

public void onErrorLogin(){
            loginView.setEnabled(true);
            loginView.isFocusableInTouchMode();

            passwordView.setEnabled(true);
            passwordView.isFocusableInTouchMode();

            loginView.setCursorVisible(true);
            passwordView.setCursorVisible(true);
}

这应该可行。