Jetpack Compose 无状态栏的全屏导航对话框

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

在我使用 Jetpack Compose 的 Android 应用程序中,我需要实现设计,其中 app:

  • 根本没有状态栏,所以它甚至不可见,应用程序可以在它下面绘制
  • 有可见的导航栏

使用这个主题:

<style name="Theme.Launcher" parent="Theme.MaterialComponents.DayNight.NoActionBar">
    <item name="android:windowBackground">@color/background</item>
    <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
</style>

以及

MainActivity.kt
中的代码:

class MainActivity : ComponentActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        // This will allows app to draw under OS status bar
        WindowCompat.setDecorFitsSystemWindows(window, false)

        setContent {
            // rest of the compose code
        }
    }
}

使用时

NavGraphBuilder
开启:

  • composable
    扩展屏幕,输出占据整个空白空间,正如预期的那样;
  • dialog
    屏幕上有
    DialogProperties( usePlatformDefaultWidth = false)
    扩展,有一些 垂直边距 并且下面的屏幕清晰可见。

使用 Jetpack 编写 BOM

2023.06.01
androidx.navigation:navigation-compose:2.7.0

我也尝试过使用

enableEdgeToEdge()
EdgeToEdgeUtils.applyEdgeToEdge(window, true)
,但输出是相似的。

Android SDK 28、31、模拟器以及真实设备上的输出相同。

感谢您了解如何正确设置此功能,因此

dialog
也可以提供正确的视觉输出,如
screen

android android-jetpack-compose statusbar android-fullscreen
1个回答
0
投票

最简单的方法是使用伴奏者

val systemUiController = rememberSystemUiController()
systemUiController.isStatusBarVisible = false
© www.soinside.com 2019 - 2024. All rights reserved.