【问题标题】:How to change background color for each menu item in NavigationDrawer material design?如何更改导航抽屉材料设计中每个菜单项的背景颜色?
【发布时间】:2016-03-25 00:52:56
【问题描述】:

我将此设计布局用于NavigationDrawer 和commun material design menu.xml,但我无法找到一种方法使每行菜单项都具有不同的颜色。怎么做?

这是我的导航抽屉 xml:

<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/transparent"
    android:id="@+id/drawer_layout"
    xmlns:app="http://schemas.android.com/apk/res-auto" >

    <android.support.design.widget.NavigationView
        android:id="@+id/navigation_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:itemTextColor="#333"
        app:itemIconTint="#333"
        app:headerLayout="@layout/drawer_header"
        app:menu="@menu/drawer" />
</android.support.v4.widget.DrawerLayout>

【问题讨论】:

  • 你可以发布代码吗,你尝试了什么?
  • 好吧,我尝试以编程方式创建 navigationmenu 并尝试选择菜单项,但没有找到设置背景颜色的 menuitem 的任何属性#Nigam Patro
  • 你能把你的菜单文件贴在你定义菜单的地方吗?
  • 那么,您已经创建了用作菜单的行项目布局?

标签: android android-layout navigation-drawer material-design


【解决方案1】:

使用 compile 'com.android.support:appcompat-v7:23.1.1'

<android.support.design.widget.NavigationView
    android:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    app:headerLayout="@layout/nav_header_main_navigation"
    app:itemBackground="@drawable/nav_view_item_background"
    app:itemTextColor="@color/nav_item_text_color"
    app:menu="@menu/activity_main_navigation_drawer" />

使用以下 XML 文件作为项目背景:nav_view_item_background.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/colorPrimary" android:state_checked="true" />
<item android:drawable="@android:color/transparent" />

使用以下 XML 文件作为文本颜色:nav_item_text_color

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/white" android:state_checked="true" />
<item android:color="@android:color/black" />

【讨论】:

    【解决方案2】:

    AFAIK 做你想做的事并不简单。如果您不想对导航抽屉进行这种类型的自定义,最好在 NavigationView 中提供整个视图,然后您可以以任何您想要的方式对其进行样式设置。

    <android.support.design.widget.NavigationView
            android:id="@+id/nav_view"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:fitsSystemWindows="true">
    
            <LinearLayout
                android:id="@+id/linear_layout"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_gravity="start"
                android:background="@color/white"
                android:orientation="vertical"
                android:theme="@style/ThemeOverlay.AppCompat.Dark">
    
                ...
    
           </LinearLayout>
    </android.support.design.widget.NavigationView>
    

    现在,您可以按照自己的方式在此线性布局中创建菜单视图。我希望这对你有帮助..

    【讨论】:

    • 哦,是的,这是自定义菜单的最佳方式,我在很长一段时间后才看到它对不起,我忘了选择你的答案,对我自定义我很有帮助谢谢@yash Ladia。
    猜你喜欢
    • 2015-10-30
    • 2016-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多