如何将导航抽屉中的 ListItem 标记为突出显示
How to mark a ListItem in the Navigation Drawer as Highlighted
我试图在抽屉列表项被选中时突出显示它。
我的导航抽屉 ListView 是:
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
.
.
.
<LinearLayout
android:id="@+id/drawer_view"
android:layout_width="304dp"
android:layout_height="match_parent"
android:layout_gravity="left|start"
android:fitsSystemWindows="true">
<!-- Your drawer content -->
<ListView
android:id="@+id/left_drawer"
style="@style/NavDrawer"
android:layout_width="320dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:listSelector="@drawable/drawer_listview_background_selector"
android:background="@color/icons"
android:choiceMode="singleChoice"
android:divider="@color/divider"
android:dividerHeight="0dp" />
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
抽屉列表项目是:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/drawer_listview_background_selector"
android:gravity="center_vertical"
android:minHeight="48dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:textSize="14sp"
android:textColor="@color/primary_text" />
选择器是:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="true" android:state_pressed="true" android:drawable="@color/primary" />
<item android:state_enabled="true" android:state_focused="true" android:drawable="@color/primary" />
<item android:state_enabled="true" android:state_selected="true" android:drawable="@color/primary" />
<item android:drawable="@drawable/normal" />
</selector>
在我正在执行的 onItemSelected 方法中:
// Highlight the selected item, update the title, and close the drawer
mDrawerList.setItemChecked(position, true);
mDrawerList.setSelection(position);
setTitle(mPlanetTitles[position]);
mDrawerLayout.closeDrawers();
// mDrawerLayout.closeDrawer(R.id.drawer_view);
需要注意的是,如果我使用
android:background="?android:attr/activatedBackgroundIndicator"
对于 ListItem 布局,它工作得很好,但它在我的 Android 4.4.4 上应用了全息颜色。
我已经阅读了大部分流行的 SO 问题并进行了测试但未通过。
将 android:state_activated
<item>
添加到您的 <selector>
,选择用于激活状态的颜色或绘图。
我试图在抽屉列表项被选中时突出显示它。
我的导航抽屉 ListView 是:
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
.
.
.
<LinearLayout
android:id="@+id/drawer_view"
android:layout_width="304dp"
android:layout_height="match_parent"
android:layout_gravity="left|start"
android:fitsSystemWindows="true">
<!-- Your drawer content -->
<ListView
android:id="@+id/left_drawer"
style="@style/NavDrawer"
android:layout_width="320dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:listSelector="@drawable/drawer_listview_background_selector"
android:background="@color/icons"
android:choiceMode="singleChoice"
android:divider="@color/divider"
android:dividerHeight="0dp" />
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
抽屉列表项目是:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/drawer_listview_background_selector"
android:gravity="center_vertical"
android:minHeight="48dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:textSize="14sp"
android:textColor="@color/primary_text" />
选择器是:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="true" android:state_pressed="true" android:drawable="@color/primary" />
<item android:state_enabled="true" android:state_focused="true" android:drawable="@color/primary" />
<item android:state_enabled="true" android:state_selected="true" android:drawable="@color/primary" />
<item android:drawable="@drawable/normal" />
</selector>
在我正在执行的 onItemSelected 方法中:
// Highlight the selected item, update the title, and close the drawer
mDrawerList.setItemChecked(position, true);
mDrawerList.setSelection(position);
setTitle(mPlanetTitles[position]);
mDrawerLayout.closeDrawers();
// mDrawerLayout.closeDrawer(R.id.drawer_view);
需要注意的是,如果我使用
android:background="?android:attr/activatedBackgroundIndicator"
对于 ListItem 布局,它工作得很好,但它在我的 Android 4.4.4 上应用了全息颜色。
我已经阅读了大部分流行的 SO 问题并进行了测试但未通过。
将 android:state_activated
<item>
添加到您的 <selector>
,选择用于激活状态的颜色或绘图。