Android:样式中的自定义颜色不起作用

时间:2014-06-11 03:58:25

标签: android xml styles themes

我有一个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属性起作用?

我以这种方式实现它的原因是我想为不同的按钮组使用不同的样式(颜色)。

这个项目可能对想要文件浏览器对话框的人有用:

FileBrowserTestDlg

1 个答案:

答案 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中工作。