我使用
enableEdgeToEdge
在透明状态栏下显示内容。这是相同的代码片段:
override fun onCreate(savedInstanceState: Bundle?) {
enableEdgeToEdge()
super.onCreate(savedInstanceState)
setContent {
SampleApplicationTheme {
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
Image(
painter = rememberAsyncImagePainter("https://picsum.photos/seed/1234/700/2000"),
contentDescription = "Bucket Photo",
)
}
}
}
}
这就是屏幕上的样子
当我尝试使用
insetsController.hide(WindowInsetsCompat.Type.statusBars())
隐藏状态栏的内容时,它完全隐藏状态栏并垂直移动其下方的内容,如下所示:
有没有办法隐藏状态栏的内容(而不是完全隐藏状态栏),以便我可以利用整个屏幕来显示我的内容?
Chirag Thummar的评论重点关注使应用程序全屏并确保隐藏状态栏的内容,从而有效地允许应用程序的内容利用整个屏幕,包括状态栏后面的区域。
首先,更新
themes.xml
中的应用程序主题以扩展 NoActionBar
主题并添加标志以隐藏状态栏的内容。如果您的应用程序面向 Android API 级别 30 (Android 11) 或更高版本,您可以直接操纵主题中系统栏的外观。请参阅 Shawn Gomez 的“将 Android Studio 的 NoActionBar
主题更改为 ActionBar:指南”作为示例。NoActionBar
配置仍然在 Android 上显示操作栏”
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<!-- Use this for Android 11 (API level 30) and above -->
<item name="android:windowFullscreen">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
</style>
Activity
中,应用其他配置以使您的应用程序全屏显示并隐藏状态栏图标。该步骤对于 11 以下的 Android 版本(API 级别 30)非常重要。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
WindowCompat.setDecorFitsSystemWindows(window, false)
val windowInsetsController = WindowCompat.getInsetsController(window, window.decorView)
windowInsetsController.hide(WindowInsetsCompat.Type.statusBars()) // Hide status bar icons
windowInsetsController.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
setContent {
SampleApplicationTheme {
// Your Compose content
}
}
}
它的用途:
WindowCompat.setDecorFitsSystemWindows(window, false)
确保您的应用程序的内容可以扩展到窗口插入区域,使应用程序真正全屏。windowInsetsController.hide(WindowInsetsCompat.Type.statusBars())
隐藏状态栏的内容。请注意,此方法可能不会在所有版本的 Android 上隐藏状态栏的背景,但它将确保图标和通知不可见,从而提供更身临其境的体验。windowInsetsController.systemBarsBehavior
是可选的,允许当用户从屏幕边缘滑动时暂时显示系统栏。它允许在全屏应用程序中轻松访问系统栏,从而增强了用户体验。