android中具有背景颜色和imageview的自定义选择器
Posted
技术标签:
【中文标题】android中具有背景颜色和imageview的自定义选择器【英文标题】:Custom selector with background color and imageview in android 【发布时间】:2016-12-05 06:34:28 【问题描述】:我正在实现一个ListView
MultiModeListener
,因此创建了一个选择器元素来突出显示列表中的所选项目。
我的选择器看起来像:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_activated="true"
android:drawable="@color/Thistle" />
</selector>
但是,我想要的理想状态如上图所示。就像 Whatsapp 中的选择器一样。据我所知,有一个半透明的“前景”图像,上面有一个复选符号的图标/图像。我想知道如何创建这样一个自定义选择器来设置我的背景图像和每个选定项目顶部的图标。
我在我的 Framelayout 中使用 Selector
作为前景元素,如下所示:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:descendantFocusability="blocksDescendants"
android:padding="6dip"
android:foreground="@drawable/statelist_item_background">
....
那么我可以在我的FrameLayout
上使用一个自定义选择器来实现这样的效果。如果根本不可能,我该如何开始在我的MultiModeListener
回调中以编程方式实现它。
PS:查看Color State documentation 表明我们只能在item
中设置andoird:color
属性,这是我们在Selector
中定义的。我希望我错了。
编辑 - 1
尝试像这样使用layer-list
:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_activated="true">
<layer-list>
<item>
<bitmap android:gravity="center" android:src="@drawable/ic_done_white_24dp" />
</item>
<item android:drawable="@color/holo_purple" />
</layer-list>
</item>
</selector>
无法将android:drawable
设置为像#80000000
这样的半透明颜色。但这没有用。而且bitmap
无论如何都不可见。
【问题讨论】:
【参考方案1】:我想这可以使用LevelListDrawable
来实现:
<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@color/img1"
android:maxLevel="1"
/>
<item
android:drawable="@color/img2"
android:maxLevel="2"
/>
<item
android:drawable="@color/img3"
android:maxLevel="3"
/>
</level-list>
将可绘制对象设置为ImageView
后,您可以调用imageView.setImageLevel(2)
来选择相应的图像。您可以拥有任意多个级别。
【讨论】:
【参考方案2】:要使用图像和背景颜色创建可绘制对象,您应该使用以下设置:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<color android:color="@color/YourColor" />
</item>
<item>
<bitmap android:gravity="center" android:src="@drawable/YourImage" />
</item>
</layer-list>
【讨论】:
以上是关于android中具有背景颜色和imageview的自定义选择器的主要内容,如果未能解决你的问题,请参考以下文章