Многоэкранный 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);
}