gpt4 book ai didi

android - Shape Drawable 中无法识别颜色状态列表

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:35:56 26 4
gpt4 key购买 nike

我定义了以下可绘制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 设置为某些 View 的背景时,我无法观察到在 color_stateful.xml 中为我的形状定义的任何颜色变化,而 View 状态是实际上改变了(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 中使用时,颜色状态信息真的会丢失吗?还是我做错了?

最佳答案

A ColorStateList不能作为 <solid> 的属性传递在 XML 定义中,或者实际上是 <shape> 的任何属性.此属性作为颜色资源从 XML 中扩展出来,然后传递给 Drawable 的 setColor()。方法,它只接受一个 ARGB 值。

只有一种 Drawable 实例被设计为根据状态包含和呈现多个项目,那就是 StateListDrawable ,这就是给 <selector> 充气时得到的结果.所有其他 Drawable 实例都只是该集合的成员或独立绘制。

另请注意,膨胀的 <shape>项目实际上是 GradientDrawable而不是 ShapeDrawable .如果您查看 inflate() GradientDrawable的方法| in the source ,您可以获得有关如何使用每个属性的所有详细信息。

喂!

关于android - Shape Drawable 中无法识别颜色状态列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8169257/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com