【问题标题】:Can't style background color of selected drawer item无法设置所选抽屉项目的背景颜色
【发布时间】:2015-09-28 04:21:01
【问题描述】:

我已经尝试查看这个问题的几个 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>

请帮忙!

【问题讨论】:

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


    【解决方案1】:

    检查这个属性

    项目背景

    然后在你的颜色目录中有一个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

    app:itemBackground="@color/nv_list"

    更新:

    查看doc

    【讨论】:

    • 在哪里可以找到导航抽屉使用的各种状态?
    • @user5382818,查看文档链接
    【解决方案2】:

    将以下文件放入drawable文件夹:

    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"/>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-16
      • 2018-12-18
      • 1970-01-01
      • 2013-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多