我正在尝试创建一个按钮样式,其中包括自定义背景和按下的背景更改响应。我是通过使用和drawable完成的。
风格
<style name="BoltButton" parent="android:style/Widget.Button">
<item name="android:background">@drawable/gree_btn_background</item>
<item name="android:paddingTop">10dp</item>
<item name="android:paddingBottom">10dp</item>
</style>
/drawable/gree_btn_background.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@color/btn_pressed"/>
<item android:state_focused="true" android:drawable="@color/btn_focuse"/>
<item android:drawable="@color/btn_green"/>
</selector>
以上设置有效,然后我尝试删除可绘制文件并尝试将其直接放在<item name="android:background"></item>
下,出现错误,那么使用@
和直接使用它有什么不同?为什么上述情况不起作用?
以下代码不起作用
<item name="android:background">
<selector >
<item android:state_pressed="true" android:drawable="@color/bolt_btn_pressed"/>
<item android:state_focused="true" android:drawable="@color/bolt_btn_focuse"/>
<item android:drawable="@color/bolt_btn_green"/>
</selector>
</item>
答案 0 :(得分:2)
<item name="android:background"></item>
在其中,它期望可绘制的ID,而不是<selector>
。
因此我们应该提供您之前提供的可绘制ID <item name="android:background">@drawable/gree_btn_background</item>