2

レイアウトにonTouchListenerを使用しています。レイアウトの外側をクリックしたい。レイアウトにonTouchListetenerを設定しました。ただし、モーションイベントは常にACTION_DOWNを示します。ビューの外側をタッチしても、ACTION_OUTSIDEが表示されません。誰かが私にそれが一定のACTION_OUTSIDEを示していない理由を見つけるのを手伝ってもらえますか?これが私が使っているコードです

Layout.setOnTouchListener(new View.OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        Log.i("action",event.getAction()+"");
        if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
            Toast.makeText(getApplicationContext(), "check", Toast.LENGTH_SHORT).show();
            return true;
        }

        return false;
    }
});
4

4 に答える 4

7

を返す場合はfalse、これ以上タッチ イベントを受け取りたくないことを示しています。trueモーション イベントを取得し続けるには、戻る必要があります。

于 2012-10-29T06:41:44.367 に答える
1

イベント リスナー自体は、一度に 1 つのイベント アクションをリッスンします。もちろん最初は ACTION.DOWN で、トーストが表示されます。

Jason Robinson と user936414 のように、オブジェクトまたはリスナーがここで 2 番目のイベント アクション ACTION.OUTSIDE を実行できるように、true に戻す必要があります。

于 2012-10-29T07:19:53.790 に答える
0

タッチがアクティビティの外にあり、フラグ FLAG_WATCH_OUTSIDE_TOUCH が設定されている場合、 ACTION_OUTSIDE を取得します。http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_WATCH_OUTSIDE_TOUCHを参照してください

于 2012-10-29T06:42:35.023 に答える