Наложение нижнего колонтитула с помощью WindowManager - PullRequest
0 голосов
/ 22 октября 2019

Я пытаюсь наложить экран с помощью WindowManager, и он работает хорошо, но экран наложения не накладывает нижний колонтитул, а накладывает заголовок. screenshot

А вот мой код.

wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);

        overlayView_bg = new View(getApplicationContext());
        // making service view fullscreen
        WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.MATCH_PARENT,
                WindowManager.LayoutParams.MATCH_PARENT,
                WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
                WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE |
                WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | 
                WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | 
                WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH ,
                PixelFormat.TRANSLUCENT);
        wm.addView(overlayView_bg, params);

Пожалуйста, помогите мне с наложением нижнего колонтитула. Спасибо!

1 Ответ

0 голосов
/ 22 октября 2019

Я нашел решение самостоятельно.

        int navigationHeight = 0, statusHeight = 0;
        Resources resources = getApplicationContext().getResources();
        int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android");
        if (resourceId > 0) {
            navigationHeight= resources.getDimensionPixelSize(resourceId);
        }
        resourceId = resources.getIdentifier("status_bar_height", "dimen", "android");
        if (resourceId > 0) {
            statusHeight = resources.getDimensionPixelSize(resourceId);
        }
        DisplayMetrics displayMetrics = getApplicationContext().getResources().getDisplayMetrics();
        float dpHeight = displayMetrics.heightPixels ;

        // making service view fullscreen
        WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                -1,(int)(dpHeight + navigationHeight + statusHeight),0,-navigationHeight,
                LAYOUT_FLAG,
                WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE |
                WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | 
                WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | 
                WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | 
                WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | 
                WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR| 
                WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
                PixelFormat.TRANSLUCENT);
        params.gravity = Gravity.BOTTOM | Gravity.LEFT;
        wm.addView(overlayView_bg, params);

Работает хорошо.

...