我有一个attrs.xml文件,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="butBackColor" format="reference|color" />
</resources>
Styles.xml包含:
<style name="GreyButtonTheme" parent="android:style/Widget.Button">
<item name="butBackColor">#3D3D3D</item>
</style>
我有custom_button.xml,其中包含一个可绘制的选择器:
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
...
<item android:left="5dp" android:right="5dp" android:top="5dp" android:bottom="5dp">
<shape>
<solid android:color="@color/butGreyBack" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
最后,我有一个包含Button的布局,我想用我的风格:
上面的代码片段对我来说很好 - 但是当我改变时:
<solid android:color="@color/butGreyBack" />
为:
<solid android:color="?butBackColor" />
..然后我得到一个&#34;错误膨胀班&#34;例外。为什么custom_button.xml选择器失败?我需要做什么才能使?butBackColor属性起作用?
我以这种方式实现它的原因是我想为不同的按钮组使用不同的样式(颜色)。
这个项目可能对想要文件浏览器对话框的人有用:
答案 0 :(得分:1)
引用属性的格式为
?[<package_name>:][<resource_type>/]<resource_name>
改变这一点:
<solid android:color="?butBackColor" />
以强>
<solid android:color="?attr/butBackColor" />
SparkyNZ写道:这个问题的答案就在评论的最后。以上几行并没有真正解决问题。我所学到的是,当前的Android SDK无法在shape / drawable XML文件中使用自定义属性。它们在视图定义中工作正常,但不能在shape / drawables中工作。