日志
横屏状态,导航栏(navigationBar)无法设置透明
2018-06-21 16:54
[QUESTION]
横屏状态,导航栏(navigationBar)无法设置透明 [ANSWER] 正常情况,用如下代码,可以让窗口上的导航栏透明。 Window window = getWindow(); window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); 但是在手机横屏状态,上述代码无效,状态栏不透明。 这是为什么呢? 原来,在android原生逻辑中,手机横屏状态,禁止导航栏透明。icfans 相关限制的代码在如下位置: 文件 NavigationBarTransitions.java (frameworks\base\packages\systemui\src\com\android\systemui\statusbar\phone): 函数 public void transitionTo(int mode, boolean animate) 代码 public void transitionTo(int mode, boolean animate) { mRequestedMode = mode; if (mVertical) { // translucent mode not allowed when vertical if (mode == MODE_TRANSLUCENT || mode == MODE_TRANSPARENT) { mode = MODE_OPAQUE; } else if (mode == MODE_LIGHTS_OUT_TRANSPARENT) { mode = MODE_LIGHTS_OUT; } } s uper.transitionTo(mode, animate); } 代 码注释中明确说明,手机横屏状态(导航栏的状态mVertical为true时),状态栏不允许透明。 |