【发布时间】:2011-12-31 10:33:39
【问题描述】:
我定义了以下drawable my_background_drawable.xml:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape android:gravity="center"
android:shape="rectangle">
<solid android:color="@color/color_stateful" />
</shape>
</item>
<item android:drawable="@drawable/selector_png_drawable" />
</layer-list>
我还定义了以下颜色状态列表资源color_stateful.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true" android:color="#FF00ff00"/>
<item android:color="#FFff0000"/>
</selector>
当我将给定的my_background_drawable 设置为某个视图的背景时,我无法观察到在color_stateful.xml 中为我的形状定义的颜色发生任何变化,而视图状态实际上发生了变化(selector_png_drawable.xml 是一个指示器)。
但是,当我通过以下方式修改 my_background_drawable.xml 时,一切都很好:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- This doesn't work
<item>
<shape android:gravity="center"
android:shape="rectangle">
<solid android:color="@color/color_stateful" />
</shape>
</item>
-->
<item>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape android:gravity="center"
android:shape="rectangle">
<solid android:color="#FF00ff00" />
</shape>
</item>
<item>
<shape android:gravity="center"
android:shape="rectangle">
<solid android:color="#FFff0000" />
</shape>
</item>
</selector>
</item>
<item android:drawable="@drawable/selector_png_drawable"" />
</layer-list>
那么当ColorStateList 资源在ShapeDrawable 中使用时,颜色状态信息是否会丢失,还是我做错了?
【问题讨论】:
标签: android colors xml-drawable statelistdrawable shapedrawable