以下问题让我发疯。我使用以下代码定义了一个 xml 片段:
<fragment class="host.helperclass.ServiceListFragment"
android:id="@+id/titles"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_width="0px"/>
然后我实现ServiceListFragment
了扩展类SherlockListFragment
。
我已经onActivityCreated
使用以下代码覆盖了该方法:
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
getListView().setDividerHeight(2);
getListView().setBackgroundColor(Color.parseColor("#EEEEEE"));
getListView().setCacheColorHint(Color.parseColor("#00000000"));
getListView().setSelector(R.drawable.list_selector);
哪里list_selector.xml
很简单:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/green"/>
<item android:state_focused="true"
android:drawable="@drawable/green"/>
<item android:state_selected="true"
android:drawable="@drawable/green"/>
</selector>
但是只有当我按下按钮时才会添加项目的绿色背景。当我释放它时,绿色背景被删除。好像state_selected
没有被识别。这可能吗?如果是这样,有什么办法可以选择里面的项目ListView
吗?
笔记:
我还尝试使用只有一个项目的选择器:
<item android:state_focused="true"
android:drawable="@drawable/green" />
结果我发现,当我按下 ListView 项目时,背景变为绿色,但当我释放它时,绿色背景被删除。当我将手指从物品上移开时,我的物品似乎失去了焦点。
编辑:
我又做了一次尝试。
我在 onListItemClick 方法中添加了这行代码:
getListView().setItemChecked(index, true);
在我的 xml 选择器中,我只放了这个项目:
<item android:state_checked="true"
android:drawable="@drawable/green" />
但奇怪的是,这不起作用。