我有一个如下的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>
最后,我有一个包含按钮的布局,我想要使用我的样式:
上面的代码片段对我来说运行良好 - 但是当我更改时:
<solid android:color="@color/butGreyBack" />
to:
<solid android:color="?butBackColor" />
然后我遇到了“Error inflating class”异常。为什么custom_button.xml选择器会失败? 我需要做什么才能让“butBackColor”属性起作用呢?
我之所以这样实现,是因为我想为不同的按钮集使用不同的样式(颜色)。
这是一个文件浏览器对话框项目,可能对想要该功能的人有用: FileBrowserTestDlg