1. ホーム
  2. android

Android: タッチイベントがあるビューからその下のビューに渡されるのを防ぐには?

2023-11-05 05:04:26

質問

具体的には以下のコードを使用して、この新しく作成されたビューの下のアクティビティがジェスチャーを受け取らないように修正する方法はありますか?

View v1 = new View(this);    
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
 1000,
 50,
 WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
 WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
 WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,
 PixelFormat.OPAQUE);

params.gravity = Gravity.BOTTOM;
WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
wm.addView(v1, params);

どのように解決するのですか?

を追加します。 onTouchEvent メソッドを追加し、true を返します。trueを返すと、イベントが消費されたことをイベントバブリングに伝えるので、他のビューにイベントがバブリングするのを防ぐことができます。

protected boolean onTouchEvent (MotionEvent me) {
    return true;
}

については v1 の場合、インポートを行うことになります。

import android.view.View.OnTouchListener;

次にonTouchListenerを設定します。

v1.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        return true;
    }
});