dispatchKeyEvent未被调用

时间:2014-06-30 20:15:05

标签: android eclipse keyboard

我在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;
        }

    }

}

1 个答案:

答案 0 :(得分:0)

软键盘不发送键事件 - 只有物理键和键盘才能发送。软键盘使用InputConnection发送事件(可能是关键事件或可能是commitText调用)。如果要获取所有事件,则需要实现InputConnection。