Android EditText - 可编辑但不可选择?
Android EditText - Editable but not Selectable?
是否可以让EditText可编辑但不可选择?我希望能够编辑一些文本,然后将其拖到页面上。它可以工作,但是当您拖动它时,这会被视为长按,因此它会选择一些文本。
我是否需要做一些事情,比如当我点击 EditText 时显示另一个视图,改为捕获触摸事件,然后在事件操作启动时隐藏它并且 return 聚焦到 editText ?这似乎 hacky/overly 复杂。
这应该有效:android:textIsSelectable="false"
第二种可能的解决方案是放置会消耗事件的空 onLongClickListener。
OnLongClickListener longClickListener = new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {\
return true; //true = event consumed, false = event not consumed
}
};
也许不完全是您正在寻找的解决方案,但是当 EditText
被放置到位时,您可以通过调用 editText.clearFocus();
来确保没有选择
如果您需要保留在拖动之前存在的选择,这将是一个问题,但如果您只是想确保选择被清除则不是。
我发现了一个比我上面提到的解决方案稍微简单一点的解决方案,然后尝试了(但没有用),但这确实有效:
先做这个,
image_text.cancelLongPress();
这显然取消了任何继承的点击,而不仅仅是长按,即它显示了光标,它没有 select 任何文本,但它也没有调出键盘,但就是这样容易:
View v = activity.getWindow().getCurrentFocus();
if (v != null) {
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(v, 0);
}
EditText myEditText = (EditText) findViewById(R.id.my_edit_text);
myEditText.setTextIsSelectable(false);
使用 setTextIsSelectable(false)
实现了预期的行为。诀窍是先 运行 setTextIsSelectable(true)
。克服了SDK中的bug/feature(有兴趣的可以调试这个方法)。在 Android 7.1.1.
上测试
editText.setTextIsSelectable(true); // needed in order to next line work properly
editText.setTextIsSelectable(false);
// restore soft keyboard functionality broken by previous line
editText.setFocusableInTouchMode(true);
editText.setFocusable(true);
editText.setClickable(true);
是否可以让EditText可编辑但不可选择?我希望能够编辑一些文本,然后将其拖到页面上。它可以工作,但是当您拖动它时,这会被视为长按,因此它会选择一些文本。
我是否需要做一些事情,比如当我点击 EditText 时显示另一个视图,改为捕获触摸事件,然后在事件操作启动时隐藏它并且 return 聚焦到 editText ?这似乎 hacky/overly 复杂。
这应该有效:android:textIsSelectable="false"
第二种可能的解决方案是放置会消耗事件的空 onLongClickListener。
OnLongClickListener longClickListener = new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {\
return true; //true = event consumed, false = event not consumed
}
};
也许不完全是您正在寻找的解决方案,但是当 EditText
被放置到位时,您可以通过调用 editText.clearFocus();
如果您需要保留在拖动之前存在的选择,这将是一个问题,但如果您只是想确保选择被清除则不是。
我发现了一个比我上面提到的解决方案稍微简单一点的解决方案,然后尝试了(但没有用),但这确实有效:
先做这个,
image_text.cancelLongPress();
这显然取消了任何继承的点击,而不仅仅是长按,即它显示了光标,它没有 select 任何文本,但它也没有调出键盘,但就是这样容易:
View v = activity.getWindow().getCurrentFocus();
if (v != null) {
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(v, 0);
}
EditText myEditText = (EditText) findViewById(R.id.my_edit_text);
myEditText.setTextIsSelectable(false);
使用 setTextIsSelectable(false)
实现了预期的行为。诀窍是先 运行 setTextIsSelectable(true)
。克服了SDK中的bug/feature(有兴趣的可以调试这个方法)。在 Android 7.1.1.
editText.setTextIsSelectable(true); // needed in order to next line work properly
editText.setTextIsSelectable(false);
// restore soft keyboard functionality broken by previous line
editText.setFocusableInTouchMode(true);
editText.setFocusable(true);
editText.setClickable(true);