我正在使用builder.setContentText(txt)
在通知的第二行显示文本,其中txt
实际上是基于HTML的样式化文本(包括CSS颜色),以产生彩色文本。
我正在使用的代码是:
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, channelId);
// ... various stuff ... then ...
String decodedHeader = Uri.decode(header);
Log.d(TAG, "decodedHeader: " + decodedHeader);
Spanned styledText = HtmlCompat.fromHtml(decodedHeader, HtmlCompat.FROM_HTML_MODE_LEGACY);
builder.setContentText(styledText);
Notification notification = builder.build();
和日志输出(以显示html / css内容)为:
decodedHeader: <span style="color:#333333;">↓72%</span><span style="color:#333333;"> │ </span><span style="color:#0ca911;">5°C</span><span style="color:#333333;"> │ </span><span style="color:#ff3333;">2°C↓</span><span style="color:#333333;"> │ </span><span style="color:#ff80c1;">4°C</span><span style="color:#333333;"> │ </span><span style="color:#00764a;">92%</span><span style="color:#333333;"> │ </span><span style="color:#5546ff;">14 mm</span><span style="color:#333333;"> │ </span><span style="color:#fd93fd;">8 (17) mph</span><span style="color:#333333;"> │ </span><span style="color:#333333;">19:34</span>
当系统(运行Android 10的系统)处于灯光模式时,通知会很好地显示以下颜色:
但是当系统处于黑暗模式时,颜色会丢失:
这仅仅是系统强制执行的,我无法控制吗?
答案 0 :(得分:0)
他们在docs中清楚地说过
主题和样式
您的主题和样式应避免硬编码的颜色或意在浅色主题下使用的图标。您 应该使用主题属性(首选)或夜间限定的资源 代替。
并且还特定于通知。
要注意的常见陷阱:
在所有这些情况下,请使用适当的主题属性,而不要使用硬编码的颜色。