正如我们在 TextView
或 EditText
中所知,在选择文本后我们有 ContextMenu
,我的问题是:如何在没有 的情况下选择文本code>ContextMenu
或禁用显示?
此代码有效,但无法选择文本的原因
public class MyEditText extends AppCompatEditText {
private final Context mContext;
private int mPreviousCursorPosition;
public MyEditText(Context context) {
super(context);
this.mContext = context;
}
public MyEditText(Context context, AttributeSet attrs) {
super(context, attrs);
this.mContext = context;
}
public MyEditText(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
this.mContext = context;
}
@Override
protected void onSelectionChanged(int selStart, int selEnd) {
CharSequence text = getText();
if (text != null) {
if (selStart != selEnd) {
setSelection(selStart, selEnd);
return;
}
}
mPreviousCursorPosition = selStart;
super.onSelectionChanged(selStart, selEnd);
}
}
最佳答案
对于 API 级别 11 或更高级别,执行此操作:
edittext.setCustomSelectionActionModeCallback(new ActionMode.Callback() {
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
public void onDestroyActionMode(ActionMode mode) {
}
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
//This will prevent opening the menu
return false;
}
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
return false;
}
});
进一步阅读:
关于Android 在没有 ContextMenu 的情况下选择 TextView/EditText 上的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46263151/