【发布时间】:2016-12-05 06:34:28
【问题描述】:
我正在实现一个ListViewMultiModeListener,因此创建了一个选择器元素来突出显示列表中的所选项目。
我的选择器看起来像:
<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_width="wrap_content"
android:layout_height="wrap_content"
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 无论如何都不可见。
【问题讨论】:
标签: android layout background imageview selector