如果我使用
禁用EditText
小部件
editText.setEnabled(false);
我仍然可以使用屏幕输入法(在模拟器和G1中)输入。这是有意的吗?我该如何解决这个问题?
答案 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)
要获得更新的答案,请查看以下帖子: