chR*_*NaN 6 java android background button
我有一个包含drawable和text的按钮.我希望按钮的背景与提供的正常背景不同(最好是纯色).这很好用,我只是使用android:backgroundXML文件中的属性并相应地分配颜色.但是,我希望背景在选择或聚焦时变为不同的颜色(状态选择器).
我试图在一个带有定义颜色的drawable文件夹中创建一个选择器(在处理按钮文本时效果很好),如下所示:
<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>
Run Code Online (Sandbox Code Playgroud)
并将此xml设置为android:background属性,如下所示:
android:background="@drawable/button_state"
Run Code Online (Sandbox Code Playgroud)
但这导致一个力量关闭说明:
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/button_state.xml from drawable resource ID #0x7f020070
Run Code Online (Sandbox Code Playgroud)
但资源就在那里.你能不自定义背景状态?如果可以,怎么样?或者我做错了什么?谢谢您的帮助!
Ted*_*opp 10
您发布的xml适用于颜色状态列表,而不适用于可绘制的状态列表.试试这个:
<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>
Run Code Online (Sandbox Code Playgroud)
或者,将您现有的文件放入res/color并使用它,就像使用任何其他颜色一样.但是,我不记得你是否可以直接使用颜色状态列表作为视图的背景.