我试图突出显示所选的导航抽屉项目,但它不起作用。它仅在按下项目时突出显示,但在选择项目后不会保持高亮显示。
我有以下代码:
ListView:
<ListView
android:id="@+id/drawer_listview"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:choiceMode="singleChoice"
android:divider="@color/drawer_divider"
android:dividerHeight="@dimen/drawer_divider_height"
android:listSelector="@drawable/list_selector_holo_light" />
选择器:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/transparent" android:state_window_focused="false"/>
<item android:drawable="@drawable/list_selector_disabled_holo_light" android:state_enabled="false" android:state_focused="true" android:state_pressed="true"/>
<item android:drawable="@drawable/list_selector_disabled_holo_light" android:state_enabled="false" android:state_focused="true"/>
<item android:drawable="@drawable/list_selector_background_transition_holo_light" android:state_focused="true" android:state_pressed="true"/>
<item android:drawable="@drawable/list_selector_background_transition_holo_light" android:state_focused="false" android:state_pressed="true"/>
<item android:drawable="@drawable/list_activated_holo" android:state_activated="true" />
<item android:drawable="@drawable/list_focused_holo" android:state_focused="true"/>
drawables是使用Android Holo Colors生成的9个补丁文件。
在我的活动中:
mListView.setAdapter(mAdapter);
mListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
mListView.setItemChecked(1, true); // Testing
mListView.setSelection(1); // Testing
据我所知,选择器中的state_activated="true"
是在选中/选择listView项目时。但它没有用。
我为行布局设置android:background="@drawable/list_selector_holo_light"
,现在它正在工作,但我仍然不知道为什么listSelector不工作。
答案 0 :(得分:3)
您使用的是哪个版本的Android?
我认为state_activated适用于API级别11及更高版本。
我遇到过这种情况,为了处理Pre Honeycomb,我为ListView创建了一个自定义适配器,并在getView
方法中使用了以下代码:
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
if (mListView.isItemChecked(position)) {
holder.tvDrawerItem.setBackgroundColor(R.drawable.list_activated_holo);
} else {
holder.tvDrawerItem.setBackgroundColor(mContext.getResources().getColor(android.R.color.transparent));
}
}
附录:support for Pre HoneyComb using android support Library v4。
如果您认为支持Android 4+,请检查Android开发人员示例:http://developer.android.com/training/implementing-navigation/nav-drawer.html并检查drawer_list_layout。 activatedBackgroundIndicator
就是您所需要的:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
...
android:background="?android:attr/activatedBackgroundIndicator"
android:minHeight="?android:attr/listPreferredItemHeightSmall"/>
答案 1 :(得分:0)
您是否已将背景颜色设置为列表项?
如果是,请试试android:drawSelectorOnTop="true"
?
答案 2 :(得分:0)
drawerList.setItemChecked(currentPosition,true);
其中drawerList
是 NavigationBar的列表