我在View扩展程序中有以下双击手势,如下所示。此事件在触发时会将焦点更改为我的视图。 MyView.this.requestFocus();被调用,键盘出现。不幸的是(在运行android 4.0.4的三星Galaxy note 2上)我根本没有收到dispatchKeyEvent回调。在运行Android 4.4+的Nexus 4上,我收到了这个回调。我不确定如何继续。
private class DoubleTapGestureListener extends SimpleOnGestureListener {
private Context mContext;
private Rect mTextBounds;
public DoubleTapGestureListener(Context context) {
super();
mContext = context;
}
@Override
public boolean onDoubleTap(MotionEvent e) {
float xValue = e.getX();
float yValue = e.getY();
for (PaintBrush brush : brushes) {
mTextBounds = brush.getTextBounds();
if (mTextBounds.contains((int)xValue, (int)yValue)) {
Log.i(TAG, "Doubletap on text!");
InputMethodManager imm = (InputMethodManager) mContext
.getSystemService(Context.INPUT_METHOD_SERVICE);
MyView.this.requestFocus();
imm.showSoftInput(MyView.this,
InputMethodManager.SHOW_FORCED);
}
}
return true;
}
public void setTextBounds(Rect mTextBounds) {
this.mTextBounds = mTextBounds;
}
}
}
答案 0 :(得分:0)
软键盘不发送键事件 - 只有物理键和键盘才能发送。软键盘使用InputConnection发送事件(可能是关键事件或可能是commitText调用)。如果要获取所有事件,则需要实现InputConnection。