使用自定义颜色属性时出现“加载小部件问题”

问题描述

我们在 2021 年开发了主屏幕小部件,我尝试实现深色主题支持

根据https://developer.android.com/guide/topics/ui/look-and-feel/darktheme#widgets

“...使用适当的主题属性而不是硬编码颜色。”

据我所知,我可以使用自定义属性,并在 values 文件夹中添加了 attrs.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <attr name="customBackgroundColor" format="color" />
</resources>

之后我将我的自定义属性添加到浅色/深色主题

values/themes.xml

<resources>
    <style name="AppTheme" parent="Theme.MaterialComponents.Light">
        <item name="customBackgroundColor">@color/white</item>
    </style>
</resources>

也适用于黑暗

values-night/themes.xml

<resources>

    <style name="AppTheme" parent="Theme.MaterialComponents">
        <item name="customBackgroundColor">@color/black</item>
    </style>
</resources>

这是我的小部件布局:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="?attr/customBackgroundColor" />

当我在主屏幕上放置小部件时,我收到“加载小部件时出现问题”消息。

当我尝试对布局的颜色进行硬编码时,一切都按预期工作。

我也尝试使用属性“colorPrimary”,但没有错误消息,但小部件没有根据我切换的主题改变颜色。

我是否遗漏了某些内容或官方文档中的信息不正确?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...