【问题标题】:How to force close dark mode theme for Jetpack Compose如何强制关闭 Jetpack Compose 的暗模式主题
【发布时间】:2022-11-24 14:20:00
【问题描述】:

我写了一些 Jetpack Compose Demo,但我发现了关于适应暗模式的库错误,因此我只想在我的应用程序中显示亮模式,但是当我设置 <item name="android:forceDarkAllowed" tools:targetApi="q">false</item>AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) 时,它们不起作用,任何展示的想法仅适用于 Jetpack Compose 的轻模式?

【问题讨论】:

  • AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) 对我来说很好,至少在我自己的活动中(不确定图书馆)。

标签: android android-jetpack-compose android-jetpack


【解决方案1】:

我们用于 compose 的颜色没有在 xml 中定义,应该像下面这样:

@Composable
fun MyComposeTheme(
    darkTheme: Boolean = isSystemInDarkTheme(),
    content: @Composable () -> Unit
) {
    val colors = if (darkTheme) {
        DarkColorPalette
    } else {
        LightColorPalette
    }
    MaterialTheme(
        colorScheme = colors,
        content = content
    )
}

如您所见,您可以在 MaterialTheme 函数调用中传递任何颜色,只需删除暗模式检查即可。

【讨论】:

  • 我已经试过了,它在我的小米系列手机上不起作用,但是当我使用 Pixel 模拟器时它可以正常工作。所以 Jetpack Compose 似乎仍处于早期阶段,这意味着他们还有很大的改进空间。
  • 你的意思是即使你在小米中硬编码颜色它仍然会转移到黑暗模式?
  • 如果是这样,我怀疑它可能是单个应用程序未指定的全局配置。
  • 好的,我尝试了另一个华为,可以。到目前为止,只有小米遇到了配置问题。我发布这个issue on github google jetpack sample 希望这能引起谷歌方面和小米系统部门方面的关注。
  • 只是为了添加到@Jintin 答案,可以在 Theme.kt 文件的 ui/theme 文件夹下找到可组合的主题功能。
【解决方案2】:

只需在 res/theme.xml 和 res/theme.xml 中添加一个项目(夜间)文件是 <item name="android:windowBackground">@color/white</item> 在黑暗和光明模式下它将是白色的。

谢谢你。

【讨论】:

    【解决方案3】:

    关于主题.kt 改变这个

    val colors = if (darkTheme) {
        DarkColorPalette
    } else {
        LightColorPalette
    }
    

    对此

    val colors = LightColorPalette
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多