我正在编写一个小应用程序,我看到了一个问题的材料3文本颜色元素在黑暗模式。我已经尝试最小化的应用程序,尽可能地重现它,我的项目,重现问题的github。整个应用程序的Kotlin代码是在MainActivity.kt文件。材料的主题在项目中使用的Theme.kt文件中定义。有特殊的各种颜色,使问题更加明显。
在主活动中,有几个文本元素属于一个表面,并且只有在infoDisplayed状态变量设置为true时才会显示。在启动应用程序并按下下方的info按钮后,文本元素才会变为可见。文本颜色应该是蓝色,因为onPrimaryContainer颜色是为黑暗模式定义的,但实际上不是!对于其中一个文本元素,甚至直接声明颜色应为蓝色,如下所示:
Text(
style = MaterialTheme.typography.bodyMedium,
text = "A selection of ...",
color = Color.Blue
)
字符串
而且就连这段文字也没有蓝色。
但是,当应用程序打开时显示这些文本,然后:
1.按下homeandroid按钮,使应用程序隐藏
1.使应用程序重新显示(通过按应用程序图标或按概览按钮,然后按应用程序)。
1.现在,该应用程序再次可见,所有文本元素都如预期的那样为蓝色!
1.按下应用程序中的关闭此按钮以隐藏信息
1.按下主屏幕上的信息图标
1.信息一次又一次地以意外的颜色显示!
更多信息:
- 当在android studio中的模拟器上测试它时没有问题。
- 灯光模式没有问题。
- 我在我的开发设备上看到了它,这是小米mi 9 se与MIUI12.5.1和android 11
- 我不使用动态色彩
- 我想我在Button元素上也看到过类似的颜色问题,但我没有复制
有没有提示我写错了什么,或者是安卓系统合成的bug?有没有变通办法?如果是合成的问题,应该在哪里报告?
1条答案
按热度按时间1mrurvl11#
好吧,所以这些文本具有奇怪颜色的原因是“更多深色选项”,如@Kartik对问题的回答中所述:Weird bug color text in dark mode compose
当我为我的应用程序禁用这些选项时,颜色就会按照预期的方式运行。
更新它也可以编程方式工作
当我在代码中同时使用
<item name="android:forceDarkAllowed" tools:targetApi="q">false</item>
和字符串
在theme.kt文件中。