如何在Android中以编程方式设置editable true/false EditText?

Vai*_*ani 33 android android-edittext

我们可以设置EditTextXML布局的可编辑属性但不能以编程方式设置,但是没有setEditable()方法!

如果EditText没有启用 [by setEnabled(false)]它仍然可以编辑!

JAL*_*JAL 44

这可能有所帮助:

if (cbProhibitEditPW.isChecked()) { // disable editing password
       editTextPassword.setFocusable(false);
       editTextPassword.setFocusableInTouchMode(false); // user touches widget on phone with touch screen
       editTextPassword.setClickable(false); // user navigates with wheel and selects widget
       isProhibitEditPassword= true;
} else { // enable editing of password
       editTextPassword.setFocusable(true);
       editTextPassword.setFocusableInTouchMode(true);
       editTextPassword.setClickable(true);
       isProhibitEditPassword= false;
}
Run Code Online (Sandbox Code Playgroud)


sat*_*sat 20

我以更简单的方式做到了,setEditable和setFocusable为false.但你应该检查一下.

如何在代码中复制android:editable ="false"?


小智 8

的KeyListener的值EditText通过editText.getKeyListener() 在和存储的KeyListener型变量,其中将包含所述可编辑属性值:

KeyListener variable;
variable = editText.getKeyListener(); 
Run Code Online (Sandbox Code Playgroud)

将Editable属性设置EditText为false为:

 edittext.setKeyListener(null);
Run Code Online (Sandbox Code Playgroud)

现在将Editable属性设置EditText为true,如下所示:

editText.setKeyListener(variable);  
Run Code Online (Sandbox Code Playgroud)

注意:在XML中,默认的Editable属性EditText应为true.


Har*_*ake 5

希望这个能帮到你:

edittext1.setKeyListener(null);
edittext1.setCursorVisible(false);
edittext1.setPressed(false);
edittext1.setFocusable(false);
Run Code Online (Sandbox Code Playgroud)


小智 5

editText.setInputType(InputType.TYPE_NULL);
Run Code Online (Sandbox Code Playgroud)


Tus*_*kur 5

一旦编辑文本的焦点被移除,即使您再次将其设置为可聚焦,它也不允许您输入。

这是一种解决方法

if (someCondition)
   editTextField.setFocusable(false);
else
   editTextField.setFocusableInTouchMode(true);
Run Code Online (Sandbox Code Playgroud)

将其设置为 truesetFocusableInTouchMode()似乎可以解决问题。


Kar*_*rma 5

如何以编程方式执行此操作:

要启用EditText使用:

et.setEnabled(true);
Run Code Online (Sandbox Code Playgroud)

要禁用EditText,请使用:

et.setEnabled(false);
Run Code Online (Sandbox Code Playgroud)