今天本来只是想实现一个简单的按下 ImageButton 背景变颜色的功能,结果碰到 tag requires a 'drawable' attribute or child tag defining a drawable 的错误。这句话的意思很简单,就是说 item 标签下需要 drawable 属性。在逛了无数国内论坛无果后,我尝试进了一个英文网站,结果如醍醐灌顶,深深的感觉到国内和国外的差距。
The problem here is that you cannot define the background color using a color selector, you need a drawable selector. So, the necessary changes would look like this:
你不能将颜色选择器用在 background 上,应该使用 drawable selector,所以你应该这样修改(假设文件名为 selector.xml)
:
<xml version="1.0" encoding="utf-8"?>
<xmlns:android="http://schemas.android.com/apk/res/android">
android:state_pressed="true"
android:drawable="@drawable/selected_state" />
awable/selected_state"/>
**You would also need to move that resource to the drawable directory where it would make more sense since it's not a color selector per se.
Then you would have to create the res/drawable/selected_state.xml file like this:**
<xml version="1.0" encoding="UTF-8"?>
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
android:color="@color/semitransparent_white" />
其实这种方法将 selector 和颜色的定义分开了 我们可以将 selector 和 shape 的定义放在一起:
<xml version="1.0" encoding="UTF-8"?>
<xmlns:android="http://schemas.android.com/apk/res/android">
android:state_pressed="true">
android:color="#F1F1F1"/>
android:state_selected="true">
android:color="#F1F1F1"/>
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于