在布局中,您可以通过以下方式将EditText
窗口小部件设置为不可编辑android:editable attribute
.
我怎么能在代码中这样做?我需要EditText
根据条件使小部件可编辑.
editText.setFocusable(false); editText.setClickable(false);
这样可以确保EditText
无法选择和聚焦控件,因此无法进行编辑.
我自己试过这个,
要禁用编辑文本:
.setFocusable(false);
这也将setFocusableInTouchMode设置为false!
要启用编辑文本:
setFocusableInTouchMode(true);
这也将setFocusable设置为true;
执行此操作的最佳方法是使用以下单行代码:
textView.setKeyListener(null);
文档说这个方法:
设置要与此TextView一起使用的键侦听器.这可以为null以禁止用户输入.
我认为InputFilter
拒绝所有变化是一个很好的解决方案:
editText.setFilters(new InputFilter[] { new InputFilter() { public CharSequence filter(CharSequence src, int start, int end, Spanned dst, int dstart, int dend) { return src.length() < 1 ? dst.subSequence(dstart, dend) : ""; } } });
编辑: dlazar建议(下面)更改return
to dst.subSequence(dstart, dend)
以克服删除单词的行为.
android:editable="false" android:inputType="none"
在你的xml或
EditText mEdit = (EditText) findViewById(R.id.yourid); mEdit.setEnabled(false);
要么
EditText mEdit = (EditText) findViewById(R.id.yourid); mEdit.setKeyListener(null);
你可以试试这个:
mEditText.setFocusable(false); mEditText.setClickable(false); mEditText.setFocusableInTouchMode(false); mEditText.setLongClickable(false); mEditText.setInputType(InputType.TYPE_NULL);
如果您不希望用户打开编辑文本选项,这将完全禁用EditText,禁用长按.