首页 > 解决方案 > 我正在尝试在显示图像和动画等的系统导航栏上扩展我的自定义视图

问题描述

我正在尝试在系统导航栏上显示图像和动画等的自定义视图...所以问题是我无法将图像设置在导航栏后面,因此它隐藏了小米(android 9,API 28)设备中的系统导航栏(包括软键),我也在honor(android 8.0.0,API 26)设备中进行了测试,它显示了我的自定义视图(包含图像)和系统导航栏完美。

我已经设置了标志和所需的布局参数。下面的一段代码显示了一些重要的代码,因为它可以在前面提到的某些设备中工作。我已经尝试了所有可能的方法,无论我找到但仍然没有找到解决方案。

WindowManager.LayoutParams lpNavView = new WindowManager.LayoutParams();
lpNavView.width = WindowManager.LayoutParams.MATCH_PARENT;
lpNavView.height = navBarSize; 
  
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        lpNavView.type = 
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
        lpNavView.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL 
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | 
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | 
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS | 
WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION;
        lpNavView.format = PixelFormat.TRANSLUCENT;

    } else {
        lpNavView.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
        lpNavView.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL 
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | 
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | 
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS| 
WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION;
        lpNavView.format = PixelFormat.TRANSLUCENT;
    }

mWindowManager.addView(mNavBarView, lpNavView);

是否有任何标志可以在系统导航栏后面设置我的视图?或解决此问题的其他方法。

图片包含小米设备中的自定义导航栏

图片包含小米设备中的自定义导航栏

标签: android

解决方案


推荐阅读