Заставить оверлей получать движения событий из-под автоматически скрытой (полупрозрачной) панели навигации? - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть небольшое наложение в нижней части экрана, которое работает как задумано.Тем не менее, когда автоматически скрытая панель навигации (то есть она полупрозрачная), наложение больше не получает события движения.Я могу видеть это там, должным образом помещенный внизу, но панель навигации принимает все события.Я заметил, что некоторые приложения, которые могут похвастаться «жестами навигации», могут каким-то образом получать события движения, а это означает, что пользователь может проводить пальцем вверх, даже когда панель навигации открыта, и это приложение все равно будет получать события.Как это возможно?Я перепробовал все возможные варианты флагов, но ничего не работает.

Point screen_size = new Point();
WindowManager.LayoutParams mParams;

WindowManager mWindowManager = getSystemService(WINDOW_SERVICE);
        mWindowManager.getDefaultDisplay().getRealSize(screen_size);

layout = new LinearLayout(getApplicationContext());
layout.setOnTouchListener(this);

// color for debug.
layout.setBackgroundColor(0x55ff0000);

mParams = new WindowManager.LayoutParams(
        screen_size.x,
        40,
        0,
        0,    
        WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
        Wi    ndowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
        PixelFormat.TRANSLUCENT);
mParams.gravity = Gravity.BOTTOM;
mWindowManager.addView(layout, mParams);    
...