2015-11-17 16 views
0

我有一个ListView,用户可以选择一些东西:的ListView定制选择的图标

<ListView 
    android:id="@+id/poll_list" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" 
    android:choiceMode="singleChoice" 
    android:listSelector="#666" /> 

这工作正常。当用户挑选某物时,该物品将被着色为#666。但我宁愿它显示一个自定义图标。例如。右对齐的复选标记图形。

我可以在我的项目的视图中包含该图形。但是,如何根据状态显示它(不必让适配器始终跟踪检查状态并使所有数据无效)?

在CSS中,它将是一个右对齐的背景图形,仅在:active上可见。但如何在Android中做到这一点?我认为它应该是可能的自定义drawable不知何故。

+0

做的正确的方式(我的方式做这一切的时间),来更改背景图片,当你在'设定数据getView()'函数。每当你点击任何项目时,只需改变它的数据并调用'notifyDatasetChanged()'。这不是一个昂贵的操作。 – Darpan

回答

1

可以使用9-patch drawable像这样来实现这种效果:

9-patch drawable example

左边的黑边和顶部告诉安卓通过在这些领域把它拉开来调整,必要时可绘制。在这种情况下,这两个区域都是透明的,所以检查结果是右对齐的。

要在代码中使用它,只需将列表选择器设置为9修补程序可绘制。像这样:

lv.setSelector(R.drawable.ic_check_black_rightaligned); 

或者像这样:

... 
    android:listSelector="@drawable/ic_check_black_rightaligned" 
    ... 
+0

完美。谢谢! –