无法设置所选抽屉项目的背景颜色

时间:2015-09-28 04:21:01

标签: android android-layout android-xml android-theme android-styles

我已经尝试过查看这个问题的几个SO答案,但它们似乎都不适合我。

我正在尝试更改导航抽屉中所选项目的背景颜色(the gray)。

这是我的代码:

menu_drawer

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <group android:checkableBehavior="single">
        <item
            android:icon="@drawable/ic_one"
            android:id="@+id/nav_first_fragment"
            android:title="One"
            android:checked="true"/>
        <item
            android:icon="@drawable/ic_two"
            android:id="@+id/nav_second_fragment"
            android:title="Two" />
        <item
            android:icon="@drawable/ic_three"
            android:id="@+id/nav_third_fragment"
            android:title="Three" />
    </group>
</menu>

activity_main

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.CoordinatorLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.design.widget.AppBarLayout
            android:id="@+id/appbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
            app:elevation="0dp">

            <include
                layout="@layout/toolbar"
                />

            <android.support.design.widget.TabLayout
                android:id="@+id/tabs"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                />

        </android.support.design.widget.AppBarLayout>

        <android.support.v4.view.ViewPager
            android:id="@+id/pager"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            />

    </android.support.design.widget.CoordinatorLayout>

    <android.support.design.widget.NavigationView
        android:id="@+id/nvView"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="@android:color/white"
        app:menu="@menu/menu_drawer" />

</android.support.v4.widget.DrawerLayout>

请帮忙!

2 个答案:

答案 0 :(得分:1)

检查此属性

  

itemBackground

然后在你的颜色目录中有一个xml文件,就像这样

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="#c0c0c0" android:state_checked="true" />
<item android:color="#ffffff" />
</selector>

然后添加到NavigationView

  

应用程式:itemBackground = “@颜色/ nv_list”

<强>更新

选中此doc

答案 1 :(得分:0)

将以下文件放入可绘制文件夹:

list_selectoritem.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/list_item_bg_normal" android:state_activated="false"/>
    <item android:drawable="@drawable/list_item_bg_pressed" android:state_pressed="true"/>
    <item android:drawable="@drawable/list_item_bg_pressed" android:state_activated="true"/>

</selector>

list_item_bg_pressed.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
  <gradient
      android:startColor="@color/list_background_pressed"
      android:endColor="@color/list_background_pressed"
      android:angle="90" />
</shape>

list_item_bg_normal.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
  <gradient
      android:startColor="@color/list_background"
      android:endColor="@color/list_background"
      android:angle="90" />
</shape>

将以下代码放在color.xml

<color name="list_background">#E2231A</color>
<color name="list_background_pressed">#C4BEB6</color>
<color name="list_divider">#ffffff</color>

然后将以下更改应用于您的抽屉列表视图;

<ListView
        android:id="@+id/list_slidermenu"
        android:layout_width="300dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:choiceMode="singleChoice"
        android:divider="@null"
        android:dividerHeight="1dp"       
        android:listSelector="@drawable/list_selectoritem"
        android:background="@color/list_background"/>