50.Compose 导航栏的颜色

下面介绍两种方式 改变状态栏的颜色 (顶部 和底部)

1、EdgeToEdge

代码如下

	val statusBarLight = PrimaryLight.toArgb()
    val statusBarDark = PrimaryDark.toArgb()
    val navigationBarLight =PrimaryLight.toArgb()
    val navigationBarDark = PrimaryDark.toArgb()
    val context = LocalContext.current as ComponentActivity

    DisposableEffect(darkTheme) {
        context.enableEdgeToEdge(
            statusBarStyle = if (!darkTheme) {
                SystemBarStyle.light(
                    statusBarLight,
                    statusBarDark
                )
            } else {
                SystemBarStyle.dark(
                    statusBarDark
                )
            },
            navigationBarStyle = if(!darkTheme){
                SystemBarStyle.light(
                    navigationBarLight,
                    navigationBarDark
                )
            } else {
                SystemBarStyle.dark(navigationBarDark)
            }
        )
        onDispose { }
    }

2、Window

代码如下

 	val statusBarLight = PrimaryLight.toArgb()
    val statusBarDark = PrimaryDark.toArgb()
    val navigationBarLight =PrimaryLight.toArgb()
    val navigationBarDark = PrimaryDark.toArgb()
    val view = LocalView.current
    DisposableEffect(darkTheme) {
        val activity = view.context as Activity
        activity.window.statusBarColor = if (darkTheme){statusBarDark} else {statusBarLight}
        activity.window.navigationBarColor = if (darkTheme){navigationBarDark} else {navigationBarLight}

        WindowCompat.getInsetsController(activity.window, activity.window.decorView).apply {
            isAppearanceLightStatusBars = !darkTheme
            isAppearanceLightNavigationBars = !darkTheme
        }

        onDispose { }
    }

isDarkModel 可以使用 isSystemInDarkTheme() 获取,如果动态切换 夜间模式 可以使用Viewmodel 保存数据 view层监听数据来完成。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值