0

相対レイアウトに追加し、タッチ リスナーをカスタム ビューのみに追加するカスタム ビューがあります。問題は、onTouchevent が呼び出されないことです。実際のコードからのサンプル コードを参照してください::

ViewGroup base = (ViewGroup)findViewById(R.id.base); //relative layout
base.addView(move);
move.setOnTouchListener(touchListener);
OnTouchListener touchListener = new OnTouchListener() {

        public boolean onTouch(View v, MotionEvent event) {
            Log.d("onTouch v","="+v);
            if(v instanceof MovingView) {
                return false;
            }
            else 
                return true;
        }


    public boolean onTouchEvent(MotionEvent event) {
        int x = (int)event.getX();
            int y = (int)event.getY();


}
};// close listener
4

1 に答える 1

0

まず、初期化する前にリスナーを設定します (null です)。これを試して:

ViewGroup base = (ViewGroup)findViewById(R.id.base); //relative layout
base.addView(move);

OnTouchListener touchListener = new OnTouchListener() {

        public boolean onTouch(View v, MotionEvent event) {
            Log.d("onTouch v","="+v);
            if(v instanceof MovingView) {
                return false;
            }
            else 
                return true;
        }


    public boolean onTouchEvent(MotionEvent event) {
        int x = (int)event.getX();
            int y = (int)event.getY();


}
};// close listener

move.setOnTouchListener(touchListener);

次に、次のことに注意してください。

「onTouchEvent() メソッドは、タッチ スクリーン イベントがその下のどのビューでも処理されなかったときに呼び出されます。」

于 2013-07-04T04:18:32.570 に答える