如何删除 Jetpack Compose 中的状态栏?

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

我正在尝试从我的应用程序中删除状态栏。

我查了几个帖子,很多人都推荐这个:

val systemUiController = rememberSystemUiController()

systemUiController.isStatusBarVisible = false // Status bar
systemUiController.isNavigationBarVisible = false // Navigation bar
systemUiController.isSystemBarsVisible = false // Status & Navigation bars
systemUiController.navigationBarDarkContentEnabled = falsee

在 Main 活动的 setContent 块内。 来自:com.google.accompanist:accompanist-systemuicontroller

上面代码的结果是一个黑色的状态栏。 我想要实现的是完全删除它并扩展可组合屏幕。

我得到了什么:

我想要什么:

我不想更改状态栏颜色,因为应用程序具有不同背景颜色的屏幕,并且我想要均匀的结果。 (相同的背景颜色,相同的状态栏颜色)

你知道这是否会发生吗?以及如何?

提前谢谢您!

colors android-jetpack-compose hide statusbar
2个回答
0
投票

为此,您需要将状态栏颜色设置为

Transparent
,然后将
setDecorFitsSystemWindows
设置为
false
,如何做到这一点? 有两种方法:

如果您在 themes.kt 文件中使用

material 3 compose
,您应该有这个:

if (!view.isInEditMode) {
    SideEffect {
        val window = (view.context as Activity).window
        //set this to transparent
        window.statusBarColor = Color.Transparent.toArgb()
        WindowCompat.getInsetsController(window, view).isAppearanceLightStatusBars = darkTheme
    }
}

如果您不使用材料 3,请转到您的

themes.xml
文件并更改此内容:

<?xml version="1.0" encoding="utf-8"?>
<style name="Theme.Test" parent="android:Theme.Material.Light.NoActionBar" >
    <item name="android:windowTranslucentStatus">
        false
    </item>
    <item name="android:statusBarColor">
        @color/black
    </item>
    </style>
(您可能必须将透明颜色添加到您的colors.xml文件中)

执行以下两种方法之一后,您想要转到 MainActivity 并将其添加到 setContent 函数之前:

class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    //add this line
    WindowCompat.setDecorFitsSystemWindows(window,false)

    setContent {
        TestTheme {
            // A surface container using the 'background' color from the theme
            Surface(
                modifier = Modifier.fillMaxSize(),
                color = Color.Green
            ) {

            }
        }

0
投票

尝试将以下代码添加到应用程序基本主题的 theme.xml 中。

<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item> 
© www.soinside.com 2019 - 2024. All rights reserved.