透明导航栏不处于分屏模式透明

问题描述 投票:0回答:1

我工作的一个应用程序在Android版本的支持,它使用透明的系统吧。这是通过在样式下面的定义来实现:

<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="android:statusBarColor">@android:color/transparent</item>

<item name="android:windowDrawsSystemBarBackgrounds">true</item>

而下面的代码:

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
    /* Make system bars fully transparent */
    getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
}

在正常模式下,该按预期工作:无论是状态和导航栏被覆盖在应用内容。

在分屏模式,此作品为状态栏而不是导航栏:在纵向模式下,当应用程序是在底部,导航栏是黑色的,但getWindow().getDecorView().getRootWindowInsets().getSystemWindowInsetBottom()报告的144个像素的插图。装饰视图的高度比根视图的少144个像素(不分割画面它们都是相等的,如该应用不具有动作栏)。类似的症状在横向模式时,应用程序是正确的(如导航栏)。

添加View.SYSTEM_UI_FLAG_LAYOUT_STABLE标志不会有任何效果。

该设备是智能电话,即,默认为纵向设备并且示出在横向模式下的一侧的导航栏时。

是在Android分发中的错误,我使用(LineageOS 15.1,安卓8.1.0),还是我失去了一些东西?如果导航栏在分屏模式透明?如果没有,我怎么能可靠地确定我的观点的部分要由系统杆被遮蔽?

android user-interface transparency
1个回答
0
投票

正如我仍然有报告的数值没有解释,我认为这是存在于许多(如果不是全部)Android版本的一个bug。

此外,为了获得插图窗口显然优选的方法是重写onApplyWindowsInsets()和评价通过了insets参数(因为API 20,其已经被支持,而以上述方式需要API 23)。不幸的是,这似乎已经some bugs of its own,即报告不正确的顶部插图,但合并这两个结果对我来说工作。

  • 存储传递给onApplyWindowsInsets()的插图,丢弃只有最上面的一个。
  • 使用存储的值,并依靠View#getRootWindowInsets()让高层插图。

合并值已经为我工作。

© www.soinside.com 2019 - 2024. All rights reserved.