使EditText字段不可编辑

3
如何在输入类型为某个属性时使EditText字段不可编辑
inputType="textPassword"

我的问题是以下代码会将密码显示出来。

password.setInputType(InputType.TYPE_NULL);

已经尝试了下列方法,但仍可编辑

password.setEnabled(false)

1
https://dev59.com/MW865IYBdhLWcg3wNL07 - Jeremy D
但是它应该在一些逻辑之后可以再次编辑 - endian
我认为你也可以调用 setFocusable(false)。因为它不可聚焦,所以你将无法输入任何内容。 - dmon
已经尝试过,但setFocusable(true)在之后无法工作。 - endian
如果你使用setFocusable和setFocusableInTouchMode,它应该可以工作。 - Jeremy D
2个回答

3

如果你使用以下内容:

edittext.setFocusable();
edittext.setFocusableInTouchMode();

当需要时,您应该能够使 EditText 可编辑/不可编辑。


2

使用这个链接:如何在Android中通过XML使EditText不可编辑?

你说你想让你的字段在一些逻辑之后变得可编辑。做这个:

KeyListener keyLis = textView.getKeyListener();
textView.setKeyListener(null);

那么,当您想要重新编辑您的TextView时,请执行以下操作:

textView.setKeyListener(keyLis);

TextView类的文档:

有两个方法:

getKeyListener()

setKeyListener(KeyListener keyLis)

编辑

我没有找到任何优美的答案,但我发现了一些替代方法:

  1. 使其不可编辑

    valueText.setEnabled(false); valueText.setClickable(false); valueText.setFocusable(false);

然后,

valueText.setEnabled(true);
valueText.setClickable(true);
valueText.setFocusable(true);
  1. 您还可以更改文本编辑时不发生任何事情的方式:Can we have uneditable text in edittext

    1. 还有一些非常疯狂的解决方案。不过它们并不美观。

我建议使用最初的解决方案,除非有人找到更快捷的方法。

很抱歉我没有找到更好的解决方法 :(


看起来像是一个变通的方法,有没有更优美的解决方案? - endian
1
我不知道。我会做一些研究。 - eboix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接