ListView自定义选中图标
ListView custom selected icon
我有一个 ListView,用户可以在其中 select 一些东西:
<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
着色。但我更希望它显示自定义图标。例如。右对齐的复选标记图形。
我可以在我的项目视图中包含该图形。但是我如何根据状态显示它(而不必让 Adapter 必须跟踪检查状态并一直使所有数据无效)?
在 CSS 中,它是右对齐的背景图形,仅在 :active
上可见。但是如何在Android中做到呢?我认为以某种方式使用自定义可绘制对象应该是可能的。
您可以使用 9-patch drawable 来实现此效果:
左侧和顶部的黑条告诉 Android 在必要时通过在这些区域拉伸可绘制对象来调整可绘制对象的大小。在这种情况下,这两个区域都是透明的,因此会导致支票右对齐。
要在您的代码中使用它,只需将列表选择器设置为 9-patch 可绘制对象。像这样:
lv.setSelector(R.drawable.ic_check_black_rightaligned);
或者像这样:
...
android:listSelector="@drawable/ic_check_black_rightaligned"
...
我有一个 ListView,用户可以在其中 select 一些东西:
<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
着色。但我更希望它显示自定义图标。例如。右对齐的复选标记图形。
我可以在我的项目视图中包含该图形。但是我如何根据状态显示它(而不必让 Adapter 必须跟踪检查状态并一直使所有数据无效)?
在 CSS 中,它是右对齐的背景图形,仅在 :active
上可见。但是如何在Android中做到呢?我认为以某种方式使用自定义可绘制对象应该是可能的。
您可以使用 9-patch drawable 来实现此效果:
左侧和顶部的黑条告诉 Android 在必要时通过在这些区域拉伸可绘制对象来调整可绘制对象的大小。在这种情况下,这两个区域都是透明的,因此会导致支票右对齐。
要在您的代码中使用它,只需将列表选择器设置为 9-patch 可绘制对象。像这样:
lv.setSelector(R.drawable.ic_check_black_rightaligned);
或者像这样:
...
android:listSelector="@drawable/ic_check_black_rightaligned"
...