我与android EditText
斗争了好几天,试图摆脱"粘贴"选择文本时弹出。 (我的扩展EditText只读和可选)。
从anwser到问题:EditText: Disable Paste/Replace menu pop-up on Text Selection Handler click event
覆盖 package-private方法 canPaste()
对于dalvik运行时是可以的,但不能使用ART上面的android 5.0。
所以我找到了解决问题的其他方法,而不是覆盖方法,但尝试替换编辑器的字段变量
我认为EditText
的助手类Editor
有很多具体的逻辑,看看我是否可以在适当的时间用虚拟子类替换InsertionPointCursorController
,它会不显示弹出窗口。 (InsertionPointCursorController是一个私有类,它实现了一个私有接口,所以要用虚拟子类替换它,我需要扩展类或实现接口)
public boolean performLongClick(boolean handled) {
// Long press in empty space moves cursor and shows the Paste affordance if available.
if (!handled && !isPositionOnText(mLastDownPositionX, mLastDownPositionY) &&
mInsertionControllerEnabled) {
final int offset = mTextView.getOffsetForPosition(mLastDownPositionX,
mLastDownPositionY);
stopSelectionActionMode();
Selection.setSelection((Spannable) mTextView.getText(), offset);
getInsertionController().showWithActionPopup();
handled = true;
}
查看 getInsertionController()。showWithActionPopup(); 显示弹出窗口:(
现在我将尝试替换删除回调以替代
答案 0 :(得分:0)
您无法扩展外部私有类(默认位于同一个包中并受其他包保护)和接口。
扩展您需要更改的父类,并覆盖您需要使用的方法,但同样,您无法覆盖私有方法。 你可以重新编码它们(漂亮的#34;重载")。