【发布时间】:2010-10-28 23:59:30
【问题描述】:
如果我使用禁用 EditText 小部件
editText.setEnabled(false);
我仍然可以使用屏幕输入法(在模拟器和 G1 上)输入它。这是故意的吗?我该如何解决这个问题?
【问题讨论】:
标签: android
如果我使用禁用 EditText 小部件
editText.setEnabled(false);
我仍然可以使用屏幕输入法(在模拟器和 G1 上)输入它。这是故意的吗?我该如何解决这个问题?
【问题讨论】:
标签: android
我注意到您无法通过点击禁用的 EditText 来激活屏幕键盘,而且 DEL 键也不起作用,所以这对我来说似乎是一个错误。我在 Android 问题跟踪器中将其归档为 issue 2771。
【讨论】:
edittext.setKeyListener(null);
这对你有帮助
【讨论】:
使用这个,它对我有用
setFocusableInTouchMode(boolean);
setFocusable(boolean);
【讨论】:
我修复了这个问题,但补丁只包含在 Honeycomb 中。这就是为什么我创建了一个小项目,其中将包含我从 2.1 开始的版本的反向移植修复。它包含对错误 2771 的修复:http://code.google.com/p/android-fixes/
您可以从 svn 中查看“库”并将其包含在您的项目中。然后代替 android.widget.EditText 导入 edu.ubbdroid.android.widget.EditText (它扩展了原始的EditText),问题应该消失了:)
【讨论】:
也许您可以选择动态替换为 TextView 并返回。但您可能需要调整字体以匹配 EditText。
【讨论】:
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;
}
}
});
为所有人 你可以得到它!
【讨论】:
我认为您应该能够使用自己的函数编辑Text.setOnClickListener() 并调用 super.onClickListener() 如果您想要编辑文本。
编辑:
以下链接有一些听起来更正确的答案:
Can we have uneditable text in edittext
【讨论】: