Android导航栏覆盖屏幕底部



对于使用Jeremy Feinstein的SlidingMenu并以API 29级为目标的Android应用程序,最近在2台设备(运行Android 11的三星Galaxy A01和三星Galaxy Note20 Ultra(上发现了一个问题,即屏幕底部的内容被导航栏覆盖。

唯一对2个受影响的设备产生影响的是将其添加到滑动菜单构造函数中:

if (Build.VERSION.SDK_INT >= 21) {
setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
}

或者使用CCD_ 1代替CCD_。

这些更改中的一个或另一个解决了这两个设备上的问题,但在从未出现问题的设备上(运行Android 9、10、11的Pixel 2、Moto X4、Nexus 6等(,屏幕内容底部和导航栏之间会出现白色间隙。

据报道,这两台出现问题的设备在过去的一个不确定的时刻,可能是在1月份左右,正确显示了所有屏幕,当时该应用程序没有更新。它们属于同一用户,该用户报告说,他在任何其他应用程序中都没有这个问题,并且对于这个应用程序,仅在带有自定义ActionBar的Fragments中显示的屏幕上(删除自定义ActionBar没有帮助(。

其他尝试过的没有帮助的事情,没有特别的顺序,包括:

  • android:layout_marginBottom="?attr/actionBarSize添加到受影响屏幕的最外层布局。在未受影响的设备上创建间隙,而在受影响设备上不进行更改。

  • android:adjustViewBounds="true"添加到受影响屏幕上的所有ImageViews,根据一些Android手机在底部切断UI&屏幕右侧不做任何更改。

  • android:fitsSystemWindows="true"添加到受影响屏幕的最外层布局。没有变化。

  • bottomPadding += getNavBarHeight(getContext());在SlidingMenu的fitSystemWindows((中,在未受影响的设备上创建一个间隙,而在受影响设备上没有更改,从…起https://github.com/jfeinstein10/SlidingMenu/issues/680

  • windowDrawsSystemBarBackgrounds=false从https://github.com/jfeinstein10/SlidingMenu/issues/680

  • <item name="android:windowTranslucentNavigation">false</item>没有更改,每个底部软导航栏与我的ListView 重叠

  • 将自定义ActionBarXML封装在LinearLayout中(这确实解决了运行Android 11的模拟器上的问题,但没有解决物理设备上的问题https://androidforums.com/threads/layouts-being-pushed-off-screen-by-appbar-and-viewpager.1089636/)

所以问题是,对于有问题的设备和没有问题的设备,如何解决问题?如果有任何代码我应该发布,请告诉我。

问题是导航栏高度计算,必须针对带有显示切口的设备进行调整,这要归功于@JohnLord发现了这一差异。

最新更新