我有一个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中做到这一点?我认为应该可以通过某种方式使用自定义绘图。
答案 0 :(得分:1)
您可以使用此类9-patch drawable来实现此效果:
左侧和顶部的黑条告诉Android在必要时通过在那些区域拉伸它来调整drawable的大小。在这种情况下,这两个区域都是透明的,因此会导致检查右对齐。
要在代码中使用它,只需将列表选择器设置为9-patch drawable。像这样:
lv.setSelector(R.drawable.ic_check_black_rightaligned);
或者像这样:
...
android:listSelector="@drawable/ic_check_black_rightaligned"
...