我正在实施ListView
MultiModeListener
,因此创建一个选择器元素来突出显示列表中选定的项目。自定义选择器,背景颜色和android中的imageview
我的选择看起来像:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_activated="true"
android:drawable="@color/Thistle" />
</selector>
然而,所示的图像中,我期望的理想状态的上方。就像Whatsapp中的选择器一样。从我能做的事情来看,有一个半透明的“前景”图像,在其上方有一个检查符号的图标/图像。我想知道如何创建这样的自定义选择器,以便在每个选定项目的顶部设置我的背景图像和图标。
我用Selector
作为前景元素在我的FrameLayout像这样:
<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表明,我们只能在我们在我们的Selector
定义item
设置andoird:color
属性。我希望我错了。
编辑 - 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
不可见。