如何在xml drawable中获取材质主题的原色?

jim*_*251 15 android material-design

我正在尝试定义圆形drawable,它需要材质主题的原色.这是我的xml代码:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" >
    <solid android:color="?attr/colorPrimary"></solid>
</shape>
Run Code Online (Sandbox Code Playgroud)

但我得到了InflateException.我已经读过,我们不能在drawable xml中使用属性.那么任何解决方法呢?

Joh*_*iak 21

如果您使用的是API 21或更高版本,则应使用:

<solid android:color="?android:colorPrimary"></solid>
Run Code Online (Sandbox Code Playgroud)

对于较旧的API,您只需键入:

<solid android:color="?colorPrimary"></solid>
Run Code Online (Sandbox Code Playgroud)


小智 2

您的 colorPrimary 是否存储在您的 color.xml 中?如果是这样,只需像 @color/colorPrimary 一样引用它。

如果没有,只需在colors.xml中定义它并引用它。这些是直接来自源代码的材质的默认青色。我认为material_deep_teal_500 就是您正在寻找的。

<!-- Primary & accent colors -->

<color name="material_deep_teal_200">#ff80cbc4</color>
<color name="material_deep_teal_500">#ff009688</color>

<color name="material_blue_grey_800">#ff37474f</color>
<color name="material_blue_grey_900">#ff263238</color>
<color name="material_blue_grey_950">#ff21272b</color>
Run Code Online (Sandbox Code Playgroud)