在列表视图中显示当前select

正如在平板电脑版本的Gmail和谷歌谈话中所看到的,我正试图在列表视图中显示当前select。 我知道这不是标准的做法,应该在必要时避免。在我的程序中,listview总是在屏幕上,点击的项目显示了一个新的片段(类似于Gmail和谷歌谈话)。

为了避免用户猜测已经select了什么项目,我想显示当前的select,我尝试创build一个select器,但点击之后,它变回正常的背景。

我怎么能做到这一点?

这是我的select器xml

<selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/list_item_bg2" android:state_pressed="false" android:state_selected="false" android:state_focused="false"/> <item android:drawable="@drawable/list_item_selected_bg2" android:state_pressed="true"/> <item android:drawable="@drawable/list_item_selected_bg2" android:state_pressed="false" android:state_focused="false" android:state_selected="true" android:state_checked="false"/> <item android:drawable="@drawable/list_item_selected_bg2" android:state_pressed="false" android:state_focused="true" android:state_selected="false"/> <item android:drawable="@drawable/list_item_selected_bg2" android:state_pressed="false" android:state_focused="false" android:state_selected="false" android:state_checked="true"/> <item android:drawable="@drawable/list_item_selected_bg2" android:state_pressed="true" android:state_focused="true" android:state_selected="true" android:state_checked="true"/> <item android:drawable="@drawable/list_item_selected_bg2" android:state_pressed="true"/> </selector> 

Solutions Collecting From Web of "在列表视图中显示当前select"

使用适当的行布局,Gmail和类似应用程序使用的是activated状态。 看到:

  • 设置Android背景和持久性菜单栏 – 在旧版本上使用属性会导致崩溃 – 是否有主题/模式方法?
  • 改变蜂窝上激活的列表项背景的颜色

简而言之,你:

  • 使用背景激活的行布局(例如, android.R.layout.simple_list_item_activated_1
  • ListView上使用setChoiceMode(ListView.CHOICE_MODE_SINGLE)
  • 在你的ListView使用“ setItemChecked() ”检查应该被激活的行,以启用“激活”状态并持续高亮显示

你的另一个select是设置你的自定义列表项的背景android:background =“?android:attr / activatedBackgroundIndicator”

如果您为每一行使用自定义布局:

  1. android创build一个select器:state_activated =“true”
  2. 将其应用为自定义布局的背景。

可select的示例:

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" android:exitFadeDuration="@android:integer/config_shortAnimTime"> <item android:state_activated="true" android:drawable="@color/android_green" /> <item android:drawable="@android:color/transparent" /> </selector> 

什么为我工作

  1. 覆盖主题中的全局ListView样式

    <item name="android:listViewStyle">@style/MyListView</item>

  2. 定义你的风格

    <style name="MyListView" parent="@android:style/Widget.ListView"> <item name="android:listSelector">@drawable/listview_background_selector</item> </style>

  3. 定义select器listview_background_selector.xml

    <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" android:enterFadeDuration="@android:integer/config_mediumAnimTime" android:exitFadeDuration="@android:integer/config_mediumAnimTime"> <item android:drawable="@color/ListViewBackGroundColorPressed" android:state_activated="true" /> </selector>

  4. 设置你的listview-item-layout的背景

    android:background="?android:attr/activatedBackgroundIndicator"