android 在真实的设备上,深色模式下的文本颜色不正确

a2mppw5e  于 2024-01-04  发布在  Android
关注(0)|答案(1)|浏览(167)

我正在编写一个小应用程序,我看到了一个问题的材料3文本颜色元素在黑暗模式。我已经尝试最小化的应用程序,尽可能地重现它,我的项目,重现问题的github。整个应用程序的Kotlin代码是在MainActivity.kt文件。材料的主题在项目中使用的Theme.kt文件中定义。有特殊的各种颜色,使问题更加明显。
在主活动中,有几个文本元素属于一个表面,并且只有在infoDisplayed状态变量设置为true时才会显示。在启动应用程序并按下下方的info按钮后,文本元素才会变为可见。文本颜色应该是蓝色,因为onPrimaryContainer颜色是为黑暗模式定义的,但实际上不是!对于其中一个文本元素,甚至直接声明颜色应为蓝色,如下所示:

  1. Text(
  2. style = MaterialTheme.typography.bodyMedium,
  3. text = "A selection of ...",
  4. color = Color.Blue
  5. )

字符串
而且就连这段文字也没有蓝色。
但是,当应用程序打开时显示这些文本,然后:
1.按下homeandroid按钮,使应用程序隐藏
1.使应用程序重新显示(通过按应用程序图标或按概览按钮,然后按应用程序)。
1.现在,该应用程序再次可见,所有文本元素都如预期的那样为蓝色
1.按下应用程序中的关闭此按钮以隐藏信息
1.按下主屏幕上的信息图标
1.信息一次又一次地以意外的颜色显示!
更多信息:

  • 当在android studio中的模拟器上测试它时没有问题。
  • 灯光模式没有问题。
  • 我在我的开发设备上看到了它,这是小米mi 9 se与MIUI12.5.1和android 11
  • 我不使用动态色彩
  • 我想我在Button元素上也看到过类似的颜色问题,但我没有复制

有没有提示我写错了什么,或者是安卓系统合成的bug?有没有变通办法?如果是合成的问题,应该在哪里报告?

1mrurvl1

1mrurvl11#

好吧,所以这些文本具有奇怪颜色的原因是“更多深色选项”,如@Kartik对问题的回答中所述:Weird bug color text in dark mode compose
当我为我的应用程序禁用这些选项时,颜色就会按照预期的方式运行。

更新它也可以编程方式工作

当我在代码中同时使用<item name="android:forceDarkAllowed" tools:targetApi="q">false</item>

  1. if(Build.VERSION.SDK_INT >= 29) {
  2. LocalView.current.isForceDarkAllowed = false
  3. }

字符串
在theme.kt文件中。

相关问题