Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓11-window.setdecorfitsystemwindow不';t在状态栏和导航栏后面显示屏幕_Android_Android 11_Windowinsets - Fatal编程技术网

Android 安卓11-window.setdecorfitsystemwindow不';t在状态栏和导航栏后面显示屏幕

Android 安卓11-window.setdecorfitsystemwindow不';t在状态栏和导航栏后面显示屏幕,android,android-11,windowinsets,Android,Android 11,Windowinsets,我正在尝试将我的应用程序更新到Android 11。我的应用程序的许多屏幕都在状态栏后面设计了应用程序内容。我将gradle更新为Android 11,并开始更新窗口代码,以获得同样适用于Android 11设备的无限制行为。 我在Activitys onCreate方法中使用以下代码,为Android 11之前的设备实现了预期的结果: Window w = getWindow(); w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIM

我正在尝试将我的应用程序更新到Android 11。我的应用程序的许多屏幕都在状态栏后面设计了应用程序内容。我将gradle更新为Android 11,并开始更新窗口代码,以获得同样适用于Android 11设备的无限制行为。 我在Activitys onCreate方法中使用以下代码,为Android 11之前的设备实现了预期的结果:

Window w = getWindow();
w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
我试图通过使用
w.setdecorfitsystemwindows(false)获得Android 11的相同无限制行为

我尝试使用它而不是使用标志,与标志一起使用,并传递true和false,在设置标志之前和之后设置它,但我总是看到白色的状态和系统导航栏,而不是它们后面的我的应用程序内容。 我尝试的是:

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?.setdecorfitsystemwindows(false),它运行起来没有任何问题

有人知道我错过了什么或做错了什么吗

我的应用程序仍然是Java代码,我在另一个使用Kotlin代码的应用程序中尝试了window?.setDecorFitsSystemWindows(false),它运行起来没有任何问题

Kotlin在内部使用Java,所以不管您是用Java还是Kotlin根据插入API编写代码


您在视图层次结构中使用的其中一个视图组可能会使用插图,而不会将其传播到子视图。这就是我的情况-我的应用程序正在使用和
window.setdecorfitsystemwindows(false)对我的布局没有任何影响。那件事甚至有可能发生。如果你有类似的问题,也许你也可以用它。在Android Studio的新布局检查器中检查视图层次结构可能会有所帮助。请注意具有属性fitsystemwindows=true的视图。此外,这可能会有所帮助。

到目前为止,我能收到的最好的解决方案也是设置:controller.setSystemUnbarsbehavior(WindowInsetController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_swip);controller.hide(WindowInsets.Type.statusBars());在w.setDecorFitsSystemWindows之后(假);还有谁有更好的解决方案吗?谢谢
fitsystemwindows=true
是我的问题