如何将导航抽屉中的 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>,选择用于激活状态的颜色或绘图。