下面列出了android.view.inputmethod.InputConnection#performContextMenuAction ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public void onClick(View v) {
InputConnection ic;
switch (v.getId()) {
case R.id.keyboard_selector_top_close_btn:
close();
break;
case R.id.select:
if (mStatus == Status.direct) {
mStatus = Status.select;
beginSelect();
} else {
mStatus = Status.direct;
cancelSelectWithSelection();
}
updateSelector();
break;
case R.id.select_all:
ic = getCurrentIC();
if (ic == null)
return;
boolean hasSelection = (Boolean) mSelectAll.getTag();
if (hasSelection) {
ic.performContextMenuAction(android.R.id.cut);
} else {
ic.performContextMenuAction(android.R.id.selectAll);
}
// cancelSelectWithSelection();
break;
case R.id.arrow_up:
moveCursor(Direct.top);
break;
case R.id.arrow_down:
moveCursor(Direct.bottom);
break;
case R.id.arrow_left:
moveCursor(Direct.left);
break;
case R.id.arrow_right:
moveCursor(Direct.right);
break;
case R.id.copy:
ic = getCurrentIC();
if (ic == null || TextUtils.isEmpty(ic.getSelectedText(0)))
return;
ic.performContextMenuAction(android.R.id.copy);
cancelSelectWithSelection();
Toast.makeText(TestApplication.getInstance(), R.string.keyboard_clipboard_copy_success, Toast.LENGTH_LONG).show();
break;
case R.id.paste:
ic = getCurrentIC();
if (null == ic) {
return;
}
LatinIME.getInstance().getInputLogic().onPasteFromClipBoardEvent(ClipManager.getInstance().getPasteTipText());
ic.performContextMenuAction(android.R.id.paste);
cancelSelect();
break;
case R.id.delete:
ic = getCurrentIC();
if (ic != null) {
if (TextUtils.isEmpty(ic.getSelectedText(0))) {
LatinIME.getInstance().getInputLogic().onDeleteFromClipBoardEvent(ic.getTextBeforeCursor(1, 0).toString());
} else {
LatinIME.getInstance().getInputLogic().onDeleteFromClipBoardEvent(ic.getSelectedText(0).toString());
}
}
LatinIME.getInstance().getInputLogic().sendDownUpKeyEvent(KeyEvent.KEYCODE_DEL);
break;
default:
break;
}
mHandler.post(this::updateStatus);
}
@Override
public void selectAll() {
InputConnection ic = getInputConnection();
if (ic == null) return;
ic.performContextMenuAction(android.R.id.selectAll);
}
@Override
public void copyText() {
InputConnection ic = getInputConnection();
if (ic == null) return;
ic.performContextMenuAction(android.R.id.copy);
}
public void cutText() {
InputConnection ic = getInputConnection();
if (ic == null) return;
ic.performContextMenuAction(android.R.id.cut);
}
@Override
public void pasteText() {
InputConnection ic = getInputConnection();
if (ic == null) return;
ic.performContextMenuAction(android.R.id.paste);
}
/**
* This is called when the user has selected a context menu item from the
* extracted text view, when running in fullscreen mode. The default
* implementation sends this action to the current InputConnection's
* {@link InputConnection#performContextMenuAction(int)}, for it
* to be processed in underlying "real" editor. Re-implement this to
* provide whatever behavior you want.
*/
public boolean onExtractTextContextMenuItem(int id) {
InputConnection ic = getCurrentInputConnection();
if (ic != null) {
ic.performContextMenuAction(id);
}
return true;
}