【问题标题】:Make EditText field uneditable使 EditText 字段不可编辑
【发布时间】:2012-01-25 19:15:54
【问题描述】:

如何在属性 inputType 上使 EditText 字段不可编辑

inputType="textPassword"

我的问题是下面的代码行使密码可见。

password.setInputType(InputType.TYPE_NULL);

已尝试关注,但仍可编辑

password.setEnabled(false)

【问题讨论】:

  • 但经过一些逻辑后应该可以再次编辑
  • 我想你也可以拨打setFocusable(false)。由于它不可聚焦,您将无法输入任何内容。
  • 已经试过了,但是 setFocusable(true) 之后就不行了
  • 如果你使用 setFocusable 和 setFocusableInTouchMode 它应该可以工作。

标签: java android android-layout


【解决方案1】:

如果你玩:

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

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

【讨论】:

    【解决方案2】:

    使用这个:How to make EditText not editable through XML in Android?

    您说您希望您的字段在经过一些逻辑后可编辑。这样做:

    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. 还有其他一些非常疯狂的解决方案。不过,它们一点也不漂亮。

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

    对不起,我找不到更好的方法来做到这一点:(

    【讨论】:

    • 看起来是一种解决方法,有没有更漂亮的解决方案?
    • 我不知道。我会做一些研究。
    猜你喜欢
    • 2015-10-25
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多