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

标签 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>

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

上面的代码 fragment 对我来说工作得很好——但是当我改变时:

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

到:

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

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

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

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

FileBrowserTestDlg

最佳答案

引用属性的格式是

?[<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/

相关文章:

安卓线程 : how worker thread send signal to main(GUI) thread?

android - 为什么要创建 .out.xml 文件?

php - 按需并排排列 DIV - HTML PHP

android - gradlew 应用程序 :dependencies command is not working

android - 从设备连接到 Android 市场

java - Android 中的 XML 解析问题

c# - 使用单独的 foreach 在一行中显示两个 div

css - 如何在 Material 中并排对齐两个 ng-select 组件

android - 从 Android 上的 .net Web 服务获取列表

java - XML 或文本声明不在实体的开头 - java