2016-07-30 91 views
0

我正在实施ListViewMultiModeListener,因此创建一个选择器元素来突出显示列表中选定的项目。自定义选择器,背景颜色和android中的imageview

我的选择看起来像:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_activated="true" 
    android:drawable="@color/Thistle" /> 
</selector> 

enter image description here

然而,所示的图像中,我期望的理想状态的上方。就像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不可见。

回答

0

我想这可以使用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)来选择相应的图像。你可以有你想要的水平。

0

来创建图像的绘制,你应该使用以下设置背景颜色:

<?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> 
相关问题