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

Posted

技术标签:

【中文标题】Android:如何在可绘制的 xml 中使用当前主题的颜色?【英文标题】:Android: how to use the current theme's colors in a drawable xml? 【发布时间】:2016-05-16 14:47:22 【问题描述】:

我已经定义了两个主题,分别具有不同的原色、原色、原色、浅色和强调色。

<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 是 &lt;application/&gt; 的默认设置 然后我在具体的activity中设置AppTheme2。

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

drawable 用于两个主题的许多活动中,所以当有 AppTheme2 时,我会看到不同的颜色。 有没有办法让可绘制对象使用当前活动的当前主题的颜色?

【问题讨论】:

【参考方案1】:

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

android:color="?colorPrimary"

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

【讨论】:

在 Android 4 中有没有办法做到这一点?还是我必须在程序上做这个? 看起来像...developer.android.com/training/material/compatibility.html 遗憾的是它不适用于我的 xamarin 项目,更改 gradle 后我得到了奇怪的异常 如何以编程方式执行此操作? @AnishKumar 你找到解决办法了吗?

以上是关于Android:如何在可绘制的 xml 中使用当前主题的颜色?的主要内容,如果未能解决你的问题,请参考以下文章

如何在xml中使用纯色形状后面的drawable添加阴影?

在可绘制图层列表中调整位图大小

如何在android中动态设置可绘制的图像?

如何在 Android 中使用 XML 作为可绘制对象创建自定义形状?

如何在android studio中的可绘制列表中显示图标

如何使用xml中的可绘制形状绘制半椭圆形(Android)