Многоэкранный Android — настраиваемая системная панель навигации

Я использую многоэкранный режим Android и показываю свою пользовательскую панель запуска на дополнительном дисплее, например на мониторе. Я хочу настроить панель системной навигации монитора, как в рабочей станции Zebra connect . Я попытался использовать приведенный ниже код и скрыть панель навигации по умолчанию, используя это решение . но не могу нажимать кнопки в пользовательском представлении навигации, и когда я открываю любое приложение на мониторе, панель навигации по умолчанию отображается впереди. Может ли кто-нибудь помочь в настройке панели навигации, например, при подключении рабочей станции zebra?

      private void overLayNavigationBar() {
    if (windowManager == null) {
        windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
    }

    WindowManager.LayoutParams params;
    if (layoutOverlayTaskbar == null) {
        layoutOverlayTaskbar = (ConstraintLayout) LayoutInflater.from(this).inflate(R.layout.layout_navbar_overlay, null);
        params = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
                WindowManager.LayoutParams.FLAG_FULLSCREEN |
                        WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |
                        WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
                        WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS |
                        WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,
                SDUtils.getNavigationBarHeight(this));

        params.width = WindowManager.LayoutParams.MATCH_PARENT;
        params.height = SDUtils.getNavigationBarHeight(this);
        params.gravity = Gravity.LEFT | Gravity.BOTTOM;
        params.x = _xOffset;
        params.y = _yOffset;
        windowManager.addView(layoutOverlayTaskbar, params);
    } else {
        params = (WindowManager.LayoutParams) layoutOverlayTaskbar.getLayoutParams();
        params.x = _xOffset;
        params.y = _yOffset;
        windowManager.removeView(layoutOverlayTaskbar);
        layoutOverlayTaskbar.setLayoutParams(params);
        windowManager.addView(layoutOverlayTaskbar, params);
    }
    _xOffset += 40;
    _yOffset += 100;
}


private void setWindowParameters() {
    WindowManager.LayoutParams params = getWindow().getAttributes();
    if (SDUtils.applyDisplayCutoutModeTo(params))
        getWindow().setAttributes(params);
    getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN);
}

0 ответов