为什么我可以输入禁用的EditText?

时间:2009-05-26 14:25:15

标签: android

如果我使用

禁用EditText小部件
editText.setEnabled(false);

我仍然可以使用屏幕输入法(在模拟器和G1中)输入。这是有意的吗?我该如何解决这个问题?

8 个答案:

答案 0 :(得分:9)

我注意到您无法通过点击禁用的EditText来激活屏幕键盘,并且DEL键也不起作用,所以这看起来像是一个错误。我在Android问题跟踪器中将其作为issue 2771提交。

答案 1 :(得分:6)

edittext.setKeyListener(null);

这会对你有所帮助

答案 2 :(得分:2)

使用它,它对我有用

setFocusableInTouchMode(boolean);

setFocusable(boolean);

答案 3 :(得分:1)

我解决了这个问题,但补丁只包含在Honeycomb中。这就是为什么我创建了一个小项目,它将包含我从2.1开始的版本的后向移植修复。它包含错误2771的修复:http://code.google.com/p/android-fixes/
您可以从svn查看“库”并将其包含在您的项目中。然后代替android.widget.EditText导入edu.ubbdroid.android.widget.EditText(扩展原始的EditText),问题应该消失了:)

答案 4 :(得分:1)

etComment.setEnabled(flag);
etComment.setFocusable(flag);
etComment.setFocusableInTouchMode(flag);
if (flag) {
    etComment.requestFocus();
}
etComment.setFilters(new InputFilter[] { new InputFilter() {
    @Override
    public CharSequence filter(
        CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
            if (!flag) {
                return source.length() < 1 ? dest.subSequence(dstart, dend) : "";
            }
            return null;
        }
    }
});

为所有人 你可以得到它!

答案 5 :(得分:1)

也许您也可以使用TextView动态替换并返回。但您可能需要调整字体以匹配EditText。

答案 6 :(得分:0)

我认为您应该能够使用自己的函数editText.setOnClickListener()并调用super.onClickListener(),如果您想要编辑文本。

编辑:
以下链接有一些答案,听起来更像是正确的方式:
Can we have uneditable text in edittext

答案 7 :(得分:0)

要获得更新的答案,请查看以下帖子:

How to replicate android editable false