我试图定义圆形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>
但我得到了InflateException
。我读过我们不能在drawable xml中使用属性。那么任何解决方法呢?
答案 0 :(得分:20)
如果您使用的是API 21或更高版本,则应使用:
<solid android:color="?android:colorPrimary"></solid>
对于较旧的API,您只需键入:
<solid android:color="?colorPrimary"></solid>
答案 1 :(得分:2)
你的colorPrimary存储在你的colors.xml中吗?如果是这样,只需像@ color / colorPrimary那样引用它。
如果没有,只需在colors.xml中定义并引用它即可。这些是源代码中meterial的默认蓝绿色。我认为material_deep_teal_500正是您所寻找的。 p>
<!-- 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>
答案 2 :(得分:0)
您无法在drawable中使用属性值。 您最好使用半透明的白色/黑色(取决于您是浅色还是深色),如#44FFFFFF并覆盖在原色背景上。您会注意到大多数材料可绘制的材料在原色背景下颜色较浅/较暗...
否则,如果您需要复制的颜色 - 您必须使用@ color / myPrimaryColor - 它应该与您在主题中定义为primaryColor的颜色相同。