如何使EditText不可编辑/禁用

And*_*lva 36 android android-edittext

我有一个EditText,用户不应该在其中提供输入.所以我尝试禁用它

edittext.setEnabled(false);
edittext.setClickable(false);
Run Code Online (Sandbox Code Playgroud)

但是当我从其他一些EditText按下softKeyboard中的"next"按钮时,它会将我引导到一个不应该可编辑的按钮,并且我能够将值插入其中.怎么避免这个?

Khu*_*zad 38

这很好用; 只需将edittext的focusable属性设置为"false"即可.

<EditText
        android:id="@+id/EditTextInput"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:focusable="false"
        android:gravity="right"
        android:cursorVisible="true">
    </EditText>
Run Code Online (Sandbox Code Playgroud)

  • 这不是一个可接受的答案,因为如果我们长时间点击EditText,我们就可以使用此解决方案粘贴新数据.正确的解决方案是EditTextInput.setKeyListener(null); (25认同)

cod*_*cat 31

不要搞砸你自己.只是简单的工作使用下面一个

首先,保存EditText的键监听器:

KeyListener mKeyListener = yourTextView.getKeyListener();
yourTextView.setKeyListener(null);
Run Code Online (Sandbox Code Playgroud)

然后,如果要再次启用编辑,请将已保存的侦听器分配回:

yourTextView.setKeyListener(mKeyListener);
Run Code Online (Sandbox Code Playgroud)

资源


Azi*_*ari 17

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

无需删除焦点并设置可点击的错误.

只需删除关键监听器即可完成.

还使用Android 6.0进行了测试


And*_*lva 7

好.我做了这样的事情并得到了结果.

    edittext.setEnabled(false);
    edittext.setGravity(Gravity.CENTER);
    edittext.setClickable(false);
    edittext.setFocusable(false);
    edittext.setFilters(new InputFilter[] { new textChange() });
    edittext.setInputType(0);

       class textChange implements InputFilter {
    public CharSequence filter(CharSequence source, int start, int end,
            Spanned dest, int dstart, int dend) {

        return dest.subSequence(dstart, dend);
    }
}
Run Code Online (Sandbox Code Playgroud)


ska*_*esh 5

android:focusable="false"
android:longClickable="false"
Run Code Online (Sandbox Code Playgroud)

将这两个字段添加到您的 EditText 将禁用焦点并禁用将数据复制粘贴到您的 EditText 字段中。