我有一个 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>
最后,我有一个布局,其中包含一个我想使用我的样式的按钮:
上面的代码 fragment 对我来说工作得很好——但是当我改变时:
<solid android:color="@color/butGreyBack" />
到:
<solid android:color="?butBackColor" />
..然后我得到一个“Error inflating class”异常。为什么 custom_button.xml 选择器失败?我需要做什么才能使 ?butBackColor 属性起作用?
我以这种方式实现它的原因是我想为不同的按钮集使用不同的样式(颜色)。
这里是可能对想要文件浏览器对话框的人有用的项目:
最佳答案
引用属性的格式是
?[<package_name>:][<resource_type>/]<resource_name>
改变这个:
<solid android:color="?butBackColor" />
到:
<solid android:color="?attr/butBackColor" />
SparkyNZ 写道: 这个问题的答案在评论的最后。上面几行实际上并没有解决问题。我确实了解到,当前的 Android SDK 无法在形状/可绘制 XML 文件中使用自定义属性。它们在 View 定义中运行良好,但在形状/可绘制对象中运行不佳。
关于Android:样式中的自定义颜色不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24154406/