我正在尝试将我的应用程序更新为Android11。我的应用程序的许多屏幕都是在StatusBar后面设计了带有应用程序内容的屏幕。我将gradle更新为Android 11,并开始更新Window代码以也对Android 11设备获得No Limit行为。 我通过Activitiys onCreate方法中的以下代码实现了Android 11之前版本设备的预期结果:
Window w = getWindow();
w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
我尝试通过使用w.setDecorFitsSystemWindows(false);
我尝试使用它而不是使用标志,将其与标志一起使用并传递true和false,在设置标志之前和之后对其进行设置,但是我始终看到白色状态和系统导航栏,而不是它们后面的Apps内容。 我试过的:
Window window = getWindow();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
window.setDecorFitsSystemWindows(false); //also tried with true
} else {
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
//or
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
window.setDecorFitsSystemWindows(false); //also tried with true
}
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
//or
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
window.setDecorFitsSystemWindows(false); //also tried with true
}
我的应用程序仍然是Java代码,我在另一个使用Kotlin代码的应用程序中尝试了window?.setDecorFitsSystemWindows(false)
,它运行起来没有任何麻烦。
有人知道我在这里想念什么或做错什么吗?
答案 0 :(得分:0)
我的应用程序仍在Java代码中,我在另一个使用Kotlin代码的应用程序中尝试了window?.setDecorFitsSystemWindows(false),并且工作正常。
Kotlin在内部使用Java,因此无论是用Java还是Kotlin进行编码,都与该插入API无关。
在视图层次结构中使用的视图组之一可能会消耗插图,并且不会将其传播到子视图。这是我的情况-我的应用使用DebugDrawer,而window.setDecorFitsSystemWindows(false);
对我的情况没有影响。甚至还有solution。如果您有类似的问题,也许您也可以使用它。在新的Android Studio布局检查器中检查视图层次结构可能会有所帮助。请注意具有属性fitsSystemWindows = true
的视图。另外,answer可能会有所帮助。