如何将导航抽屉中的ListItem标记为突出显示

时间:2015-02-04 22:18:47

标签: android navigation-drawer material-design

我正在尝试在选中时突出显示抽屉列表项。

我的导航抽屉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上应用了Holo Color。

我已经阅读了大多数流行的SO问题并经过测试但失败了。

1 个答案:

答案 0 :(得分:1)

android:state_activated添加<item> <selector>,选择颜色或可绘制用于激活状态。