【问题标题】:Android: Custom colors in styles not workingAndroid:样式中的自定义颜色不起作用
【发布时间】:2014-08-01 00:11:18
【问题描述】:

我有一个 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>

最后,我有一个布局,其中包含一个按钮,我想使用我的样式:

上面的代码 sn-ps 对我来说很好 - 但是当我改变时:

<solid android:color="@color/butGreyBack" />

到:

<solid android:color="?butBackColor" />

..然后我得到一个“错误膨胀类”异常。为什么 custom_button.xml 选择器失败?我需要做什么才能使 ?butBackColor 属性起作用?

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

以下项目可能对需要文件浏览器对话框的人有用:

FileBrowserTestDlg

【问题讨论】:

    标签: android xml styles themes


    【解决方案1】:

    引用属性的格式是

    ?[<package_name>:][<resource_type>/]<resource_name>
    

    改变这个:

    <solid android:color="?butBackColor" />
    

    收件人:

    <solid android:color="?attr/butBackColor" />
    

    SparkyNZ 写道: 这个问题的答案在 cmets 的最后。以上几行实际上并没有解决问题。我学到的是,当前的 Android SDK 无法在 shape/drawable XML 文件中使用自定义属性。它们在视图定义中运行良好,但在形状/可绘制对象中运行良好。

    【讨论】:

    • 谢谢。我将其更改为 但我仍然遇到同样的问题。如果我将它改回 那么它可以工作 - 只是尝试一下,以防有其他违规行。
    • 也试过完整的包名 也不喜欢。
    • @SparkyNZ 尝试将 attrs.xml 更改为 attr.xml
    • @Rod_Algonquin:不走运。在之前的教程中,我将它从 attr.xml 重命名为 attrs.xml。重命名了它,仍然无法正常工作。我需要命名空间行还是什么?如果指定了整个包,则不应该。顺便说一句,attr.xml 在我的“值”文件夹中。
    • 我将 butBackColor 重命名为 but_back_color ,但这也不起作用(过去在可绘制对象中出现大写问题)。
    猜你喜欢
    • 2015-02-25
    • 1970-01-01
    • 2015-07-05
    • 2020-03-12
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    • 2021-04-24
    • 1970-01-01
    相关资源
    最近更新 更多