将Edittext设置为只读并返回到可编辑
问题描述:
我发现了许多关于将编辑文本设置为只读或可编辑的问题,但所有这些问题仅适用于某些特定方案。 我需要以下功能:将Edittext设置为只读并返回到可编辑
可编辑的Edittext小部件应设置为只读编程。只读时,不应输入数据,但当前内容应可选择复制。相同的字段应该回到可编辑的状态,因此允许输入并选择要复制/粘贴的文本。
这是我当前的代码:
if (readOnly)
{
_text.setTextColor(Color.GRAY);
_keyListener = _text.getKeyListener();
_text.setKeyListener(null);
}
else
{
_text.setTextColor(_foreground);
if (_keyListener != null)
{
_text.setKeyListener(_keyListener);
}
_text.setFocusable(true);
}
我已经尝试以下方法:
- 呼叫
setTextIsSelectable()
在只读部分。这使得可以在只读字段中选择文本。但是,如果我将其更改回可编辑状态,该字段仍然只能选择。 - 将只读状态的inputtype设置为null,并将其设置回以前的状态以将其设置为可编辑状态。有了这个,该字段在设置回可编辑状态后不可编辑。
我想我忘了设置某种类型的监听器或属性。也许你们中的一个知道那是哪一个。
编辑: 试过如下: Disabling of EditText in android 但只要我不会用setTextIsSelectable()
使只读文本选择它才会起作用。如果我设置该值并切换回可编辑状态,则该字段仅可选,但不可编辑。
感谢
答
使用此参数android:textIsSelectable="true"
android:inputType="none"
(android:editable
已过时)
或编程
editText.setInputType(InputType.TYPE_NULL);
editText.setTextIsSelectable(true);
如果这是不工作,你可以尝试一些自定义的,在第一次使用的android :textIsSelectable =“true”in your xml, after define two methods
private void disableEditText() {
editText.setInputType(InputType.TYPE_NULL);
disabled = true;
}
private void enableEditText() {
editText.setInputType(InputType.TYPE_CLASS_TEXT);
disabled = false;
}
和开放的每一个键盘的文字时,也不是残疾人和使用点击editText
editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean b) {
if (!disabled) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, InputMethodManager.SHOW_FORCED);
}
}
});
而且不要忘记定义boolean disabled
希望这是帮助你
可能的复制时间[在Android中禁用EditText](https://*.com/questions/4297763/disabling-of-edittext-in-android) –
不幸的是没有工作,请参阅我的编辑。 – Roman
如果没有别的工作,你可以尝试使用两个不同的小部件,并只显示相关的一个。在只读时显示TextView,在编辑时显示EditText,并在隐藏时使用TextWatchers保持同步。 – cwbowron