ListView自定义选定图标

时间:2015-11-17 17:18:04

标签: android listview android-drawable

我有一个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中做到这一点?我认为应该可以通过某种方式使用自定义绘图。

1 个答案:

答案 0 :(得分:1)

您可以使用此类9-patch drawable来实现此效果:

9-patch drawable example

左侧和顶部的黑条告诉Android在必要时通过在那些区域拉伸它来调整drawable的大小。在这种情况下,这两个区域都是透明的,因此会导致检查右对齐。

要在代码中使用它,只需将列表选择器设置为9-patch drawable。像这样:

    lv.setSelector(R.drawable.ic_check_black_rightaligned);

或者像这样:

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