【问题标题】:Jetpack Compose status bar color not updated in Dark ThemeJetpack Compose 状态栏颜色未在深色主题中更新
【发布时间】:2022-01-23 19:57:09
【问题描述】:

我想为深色主题和浅色主题设置不同的颜色。除了状态栏颜色外,一切正常。

在深色主题中 -> 我的状态栏颜色未更新。

我的主题:

private val DarkColorPalette = darkColors(
    primary = Color.Black,
    primaryVariant = Color.Black,
    secondary = Color.LightGray
)

private val LightColorPalette = lightColors(
    primary = Purple500,
    primaryVariant = Purple700,
    secondary = Teal200
)

我在深色主题中的输出:

编辑:

我已经看到了这个答案 - how to change statusbar color in jetpack compose?

他们建议使用该库。我不想使用任何 3rd 方库。

编辑 2:

我的清单文件

   <activity
        android:name=".ActivityTextStyles"
        android:exported="true"
        android:label="@string/app_name"
        android:theme="@style/Theme.ComposeText.NoActionBar" />

【问题讨论】:

  • 这能回答你的问题吗? how to change statusbar color in jetpack compose?
  • @PhilipDukhov 他们推荐 3rd 方库。仅对于状态栏颜色,我需要使用库??
  • 是的,它也是谷歌制作的。由于某些原因,他们只是决定它不应该在 compose 内部。
  • 你的活动是什么Theme
  • @BartekLipinski 我在我的活动中使用 MaterialTheme

标签: android android-jetpack-compose


【解决方案1】:

我可以在 onCreate() 中使用这一行代码设置状态栏颜色

  this.window.statusBarColor = ContextCompat.getColor(this,R.color.black)

我的代码:

    override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContent {
      
            this.window.statusBarColor = ContextCompat.getColor(this,R.color.black)
            //your composables
         }
     }

【讨论】:

    【解决方案2】:

    这是我在遇到同样的问题并决定深入寻找原因时发现的。

    事实证明,我的 Compose 项目开箱即用地从 res/values 中的 themes.xml 文件中读取状态栏颜色的值。该值是使用 colorPrimaryVariant 设置的。将该值更新为新颜色会更改状态栏的颜色。

    总的来说,我建议将themes.xml 和colors.xml 的值更新为您希望用于项目的自定义颜色。

    【讨论】:

    • 好收获。我会试试的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-08
    • 2021-09-19
    • 1970-01-01
    • 2021-07-11
    • 1970-01-01
    相关资源
    最近更新 更多