我发现很多关于将编辑文本设置为readOnly或者可编辑的问题,但所有这些问题仅适用于某些特定场景。我需要以下功能:
可编辑的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()
。这使得能够在只读字段中选择文本。但是,如果我将其更改回可编辑状态,则该字段仍然只能选择。我想我忘了设置一些听众或财产。也许你们其中一个人知道那是哪一个。
编辑:尝试以下:Disabling of EditText in android但只有我不会使用setTextIsSelectable()
使readonly文本可选择它只有作用。如果我设置此值并切换回可编辑状态,则该字段仅可选,但不可编辑。
谢谢
使用此参数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;
}
每当没有禁用文本时打开键盘并使用点击qazxsw poi
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
bool isEnabled = false
工作和测试!这是来自xamarin c#但您可以通过在某些代码中添加前缀“Set”来轻松地在java中进行转换
基于Gideon Huyo-a的答案,这将转换为Java并可在Android Studio上使用
eidtText.Focusable= isEnabled ;
eidtText.FocusableInTouchMode = isEnabled ;
eidtText.Clickable= isEnabled ;
eidtText.LongClickable= isEnabled ;
eidtText.SetCursorVisible(checkedFalse) ;
也转换为方法只是使用
private void EnableDisableEditText(boolean isEnabled, EditText editText) {
editText.setFocusable(isEnabled);
editText.setFocusableInTouchMode(isEnabled) ;
editText.setClickable(isEnabled);
editText.setLongClickable(isEnabled);
editText.setCursorVisible(isEnabled) ;
}