如何使EditText不可编辑/禁用

时间:2011-07-18 09:37:58

标签: android android-edittext

我有一个EditText,用户不应该在其中提供输入。所以我尝试通过

禁用它
edittext.setEnabled(false);
edittext.setClickable(false);

但是当我从其他一些EditText按下softKeyboard中的“next”按钮时,它会将我引导到一个不应该可编辑的按钮,我可以在其中插入值。怎么避免这个?

11 个答案:

答案 0 :(得分: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>

答案 1 :(得分:31)

不要搞砸你自己。只需简单的工作就可以使用一个

首先,保存EditText的密钥监听器:

KeyListener mKeyListener = yourTextView.getKeyListener();
yourTextView.setKeyListener(null);

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

yourTextView.setKeyListener(mKeyListener);

source

答案 2 :(得分:17)

yourEditText.setKeyListener(null);

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

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

还使用Android 6.0测试

答案 3 :(得分: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);
    }
}

答案 4 :(得分:4)

尝试添加

edittext.setFocusable(false); edittest.setFocusableInTouchMode(false);

答案 5 :(得分:3)

android:focusable="false"
android:longClickable="false"

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

答案 6 :(得分:1)

查看this

editText.setEnabled(false);editText.setFocusable(false);将实现。

答案 7 :(得分:0)

在EditText Xml代码中。粘贴在线下方。

android:focusable="false"

答案 8 :(得分:0)

android:focusable="false" 

为我工作。

答案 9 :(得分:0)

使用imeOptions属性将softKeyboard中的该按钮更改为

机器人:imeOptions = “actionDone”

将它添加到您要禁用的那个之前的EditText。

答案 10 :(得分:0)

这可能是有帮助的。 我找到了一个实现:

@Override
    public boolean onTouch(View v, MotionEvent event) {
        //for edit text
        return locked;
    }

locked处于锁定状态。

当然,我必须使用editText.setOnTouchListener(<listener>);