java - 如何设置自定义按钮状态背景颜色?

标签 java android button background

我有一个包含可绘制对象和文本的按钮。我希望按钮的背景不同于提供的正常背景(最好是纯色)。这很好用,我只是在 XML 文件中使用 android:background 属性并相应地分配颜色。但是,我希望背景在选中或聚焦(状态选择器)时更改为不同的颜色。

我试图在具有定义颜色的可绘制文件夹中创建一个选择器(在处理按钮文本时效果很好),如下所示:

    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_focused="true" android:state_pressed="false" android:color="@color/green" />
        <item android:state_focused="true" android:state_pressed="true" android:color="@color/green" />
        <item android:state_focused="false" android:state_pressed="true" android:color="@color/green" />
        <item android:color="@color/white" />
    </selector> 

并将此 xml 设置为 android:background 属性,如下所示:

android:background="@drawable/button_state"

但这会导致强制关闭声明:

 Caused by: android.content.res.Resources$NotFoundException: File res/drawable/button_state.xml from drawable resource ID #0x7f020070

但是资源在那里。不能自定义后台状态吗?如果可以,怎么做?或者我做错了什么?感谢您的帮助!

最佳答案

您发布的 xml 适用于 color state list ,而不是可绘制的状态列表。试试这个:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true" android:state_pressed="false" >
        <shape><solid android:color="@color/green"/></shape>
    </item>
    . . .
</selector>

或者,将现有文件放入 res/color 并像使用任何其他颜色一样使用它。但是,我不记得是否可以直接使用颜色状态列表作为 View 的背景。

关于java - 如何设置自定义按钮状态背景颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14105061/

相关文章:

Android Sqlite 存储限制

html 输入按钮 onclick=display :None

javascript - Raptor 编辑器的保存所有按钮

java - 从目录中删除 RandomAccessFile

java - 我在哪里可以获得 JTAPI jar?

运行Proguard后Android操作栏Sherlock非法参数异常

javascript - 模态类不适用于按钮

java - BLE 找到设备但未连接

java - 将 Bigdecimal 转换为 Integer

android - 在 chrome 开发工具上模拟低分辨率设备