正如平板电脑版gmail和google talk中所见,我试图在列表视图中显示当前选择。我知道这不是标准做法,应该在必要时避免使用。在我的程序中,列表视图总是在屏幕上,点击的项目显示右侧的新片段(类似于gmail和google talk)。
为了避免用户猜测选择了哪个项目,我想显示当前的选择,我尝试创建一个选择器但是在点击它之后它会变回正常的背景。
我怎样才能做到这一点?
这是我的选择器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>
答案 0 :(得分:73)
Gmail和类似应用使用的是activated
状态,具有适当的行布局。参见:
简而言之,你:
android.R.layout.simple_list_item_activated_1
)setChoiceMode(ListView.CHOICE_MODE_SINGLE)
ListView
setItemChecked()
上的ListView
“检查”应激活的行,以启用“已激活”状态并拥有持久性突出显示答案 1 :(得分:9)
您的另一个选择是将自定义列表项的背景设置为 android:background =“?android:attr / activatedBackgroundIndicator”
答案 2 :(得分:8)
如果您为每一行使用自定义布局:
选择器drawable的一个例子:
<?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>
答案 3 :(得分:0)
什么对我有用
覆盖主题中的全局ListView样式
<item name="android:listViewStyle">@style/MyListView</item>
定义你的风格
<style name="MyListView" parent="@android:style/Widget.ListView">
<item name="android:listSelector">@drawable/listview_background_selector</item>
</style>
定义选择器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>
设置listview-item-layout的背景
android:background="?android:attr/activatedBackgroundIndicator"