How to set editable true/false EditText in Android

2019-01-17 14:20发布

We can set editable property of EditText in XML layout but not programatically, but there is no setEditable() method!

If EditText is not Enabled [ by setEnabled(false)] it still Editable!

12条回答
别忘想泡老子
2楼-- · 2019-01-17 15:11

Fetch the KeyListener value of EditText by editText.getKeyListener() and store in the KeyListener type variable, which will contain the Editable property value:

KeyListener variable;
variable = editText.getKeyListener(); 

Set the Editable property of EditText to false as:

 edittext.setKeyListener(null);

Now set Editable property of EditText to true as:

editText.setKeyListener(variable);  

Note: In XML the default Editable property of EditText should be true.

查看更多
小情绪 Triste *
3楼-- · 2019-01-17 15:12
editText.setFocusable(false);
editText.setClickable(false);
查看更多
Ridiculous、
4楼-- · 2019-01-17 15:12

Since setEditable(false) is deprecated, use textView.setKeyListener(null); to make editText non-clickable.

查看更多
Animai°情兽
5楼-- · 2019-01-17 15:14

How to do it programatically :

To enable EditText use:

et.setEnabled(true);

To disable EditText use:

et.setEnabled(false);
查看更多
我只想做你的唯一
6楼-- · 2019-01-17 15:17

hope this one helps you out:

edittext1.setKeyListener(null);
edittext1.setCursorVisible(false);
edittext1.setPressed(false);
edittext1.setFocusable(false);
查看更多
Viruses.
7楼-- · 2019-01-17 15:19

Once focus of edit text is removed, it would not allow you to type even if you set it to focusable again.

Here is a way around it

if (someCondition)
   editTextField.setFocusable(false);
else
   editTextField.setFocusableInTouchMode(true);

Setting it true in setFocusableInTouchMode() seems to do the trick.

查看更多
登录 后发表回答