2

Android:onClick メソッドと OnTouchListener を同じボタンに設定するにはどうすればよいですか? 私のアプリにはこれが本当に必要です。

私はそれらの違いについて知っており、android:onClick または OnTouchListener のみを使用すると機能します。両方を実行しようとするとすぐに、OnTouchListener だけが機能します。

これは、さまざまなレイアウトのさまざまな機能に必要です。

理解を深めるためだけに。Android:onClick とは、 Android:onClick="InitMethod" のようなxml ファイルでこのボタンを割り当てるメソッドを意味します。

4

1 に答える 1

12

はい、同じボタンで onClick と onTouch の両方を使用できますが、OnTouch コールバックは ACTION_MOVE、ACTION_UP、ACTION_DOWN などの motionEvent を取得します。onTouch コールバックで false ( Details )を返すことを忘れないでください。以下のコードを参照してください

Button button = (Button) findViewById(R.id.button);
        button.setOnTouchListener(new OnTouchListener() {

            public boolean onTouch(View v, MotionEvent event) {
                Log.d("test", "ontouch");
                return false;
            }
        });
        button.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                Log.d("test", "onclick");
            }

        });

それぞれ onTouch と onClick のコールバックで実行したい操作を実行するだけです。クリックはユーザーがボタンを押して離したときに実行されるアクションですが、タッチはユーザーがボタンを押したときに実行されることに注意してください。

したがって、シングルクリックでログは次のようになります。1.ACTION_DOWN、2.ACTION_UP 3.onClick

03-22 16:19:39.735: D/test(682): ontouch
03-22 16:19:39.735: D/test(682): ontouch
03-22 16:19:39.735: D/test(682): onclick
于 2013-03-22T11:01:36.703 に答える