Android:如何在可绘制的 xml 中使用当前主题的颜色?

标签 android xml runtime android-theme xml-drawable

我定义了两个主题,它们具有不同的原色、深色原色、浅色原色和强调色。

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <item name="colorAccent">@color/accent</item>
</style>

<style name="AppTheme2" parent="AppTheme">
    <item name="colorPrimary">@color/primary_2</item>
    <item name="colorPrimaryDark">@color/primary_dark_2</item>
    <item name="colorAccent">@color/accent_2</item>
</style>

AppTheme 默认为 <application/> 然后我在特定的 Activity 中设置AppTheme2。

在可绘制文件 xml 中,我使用与 colors.xml 中定义的 AppTheme 相同的原色

这两个主题的许多 Activity 中都使用了可绘制对象,因此当有 AppTheme2 时,我会看到不同的颜色。 有没有办法让可绘制对象使用当前 Activity 的当前主题的颜色?

最佳答案

您可以使用此属性从当前使用的主题中获取颜色:

android:color="?colorPrimary"

这仅适用于 android 5.0 或更高版本。

关于Android:如何在可绘制的 xml 中使用当前主题的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35244242/

相关文章:

android - 如何将表格布局垂直分成相等的部分?

android - Google Play 控制台中的 Dagger Hilt 崩溃

java - 如何使对话框无标题?

java - 我可以在运行时在 netbeans 的 jframe 中添加组件吗?

android - 在 Android 中用两行四个按钮填满整个屏幕

android - 如何处理无法解码流 : java. io.FileNotFoundException:使用 FileProvider(没有这样的文件或目录)

xml - 在 R 中解析具有重复元素名称的 XML

android - 生成签名 APK - 错误 :(57) Error parsing XML: duplicate attribute in cardview?

objective-c - 在运行时创建实例变量?

angular - 如何将动态外部组件加载到 Angular 应用程序中