0

カスタム ViewGroups の dispatchTouchEvent を次のように調整しました。

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    final float xf = ev.getX();
    final float yf = ev.getY();
    final float scrolledXFloat = xf + getScrollX();
    final float scrolledYFloat = yf + getScrollY();
    final int scrolledXInt = (int) scrolledXFloat;
    final int scrolledYInt = (int) scrolledYFloat;

    if(isDetailOpened()){
        mDetailView.getHitRect(mTempRect);
        if(mTempRect.contains(scrolledXInt,scrolledYInt)){
            // offset the event to the view's coordinate system
            final float xc = scrolledXFloat - mDetailView.getLeft();
            final float yc = scrolledYFloat - mDetailView.getTop();
            MotionEvent cp = MotionEvent.obtain(ev);
            cp.setLocation(xc, yc);
            boolean consumed = mDetailView.dispatchTouchEvent(cp);
            cp.recycle();
            return consumed;
        }
    }

    return super.dispatchTouchEvent(ev);
}

mDetailView は onTouchEvent でイベントを取得しますが、onClickListener を適切に起動しませんが、たとえば GestureDetector は正常に動作します。誰がこれを引き起こしているのか考えていますか? mDetailView はビュー階層の一部ではありません。dispatchDraw で手動で描画しています。ビューがウィンドウに接続されていないことが問題になる可能性があります。これに関する情報はありますか?ありがとう

4

1 に答える 1