【问题标题】:Color changing of Header item in DrawerDrawer 中 Header 项的颜色变化
【发布时间】:2017-06-29 00:44:24
【问题描述】:

相同的代码相同的属性,但抽屉菜单项中的输出不同!我正在使用两个模拟器,其中一个是 API 级别 19,另一个是 API 级别 23,我标记了输出的不同视图。在抽屉菜单中,我使用了一个标题名称,它应该是我所期望的颜色,但它出现在 API 23 设备中但不在 API 19 中,最重要的是,我如何通过更改其颜色来自定义此标题项(仅标记区域不是其他人)

<android.support.design.widget.NavigationView
          android:id="@+id/nav_view"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:layout_gravity="start"
          android:background="#000"
          android:fitsSystemWindows="true"
          app:headerLayout="@layout/drawer_header_layout"
          app:itemIconTint="@color/colorPrimaryDark"
          app:itemTextColor="#FFFFFF"
          app:menu="@menu/drawer_item">

This is for menu item ...

 xmlns:android="http://schemas.android.com/apk/res/android">  
  <item
          android:id="@+id/essential"  
          android:checkable="false"
          android:title="Essential">
          <menu>
              <item
                  android:id="@+id/blood_group"
                  android:checkable="true"
                  android:icon="@drawable/blood"
                  android:title="Blood Group">

              </item>
              <item
                  android:id="@+id/respected_halls"
                  android:checkable="true"
                  android:icon="@drawable/home"
                  android:title="Respected Halls">

              </item>

https://i.stack.imgur.com/doaFM.pnghttps://i.stack.imgur.com/nmWjq.png

【问题讨论】:

  • 您可以在标题菜单中自定义视图。
  • android:background 相同,文本颜色存在android:foreground。我的应用程序从 API 17 运行到 25,无需对 xml 进行任何修改。

标签: java android xml android-studio material-design


【解决方案1】:

有两个background 设置。请参阅下面的 XML。

    <android.support.design.widget.NavigationView
    android:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="start"
    android:fitsSystemWindows="true"
    android:background="@color/colorPrimaryDark"  <-- This changes what you want
    app:headerLayout="@layout/nav_header_main"
    app:itemBackground="@color/colorPrimaryDark" <-- This changes items bg
    app:itemTextColor="@color/mbar_default_foreground_color"
    app:itemIconTint="@color/mbar_default_foreground_color" <-- recolor icons
    app:menu="@menu/activity_main_drawer"/>

总之

android:background 更改标题项的背景

app:itemBackground导航项背景

app:itemTextColor导航项的前景色

app:itemIconTint图标颜色

此菜单项的组织方式如下: (这只是为了帮助下面的cmets)

    <item android:title="@string/main_menu_section_music">
    <menu>
        <item
            android:id="@+id/main_menu_item_live_in_concert"
            android:icon="@drawable/icon_main_menu_live"
            android:title="@string/main_menu_live"/>
        <item
            android:id="@+id/main_menu_item_playlists"
            android:icon="@drawable/icon_main_menu_playlists"
            android:title="@string/main_menu_playlists"/>
        <item
            android:id="@+id/main_menu_item_albums_lyrics"
            android:icon="@drawable/icon_main_menu_albums"
            android:title="@string/main_menu_albums"/>
        <item
            android:id="@+id/main_menu_item_youtube"
            android:icon="@drawable/icon_main_menu_youtube"
            android:title="@string/main_menu_youtube"/>
    </menu>
</item>

干杯,希望对你有帮助

【讨论】:

  • 奇怪。我在我当前的应用程序中确实做到了这一点,以重新着色您在图片中显示的项目。您使用的是标准 NavigationView,是吗?它在 中,对吗?请发布您的完整 xml。
  • 我用用于组织项目的菜单结构更新了我的答案。很抱歉,但这行得通。只是为了好玩(我正在开发这个应用程序)将颜色更改为黄色,我的菜单变成了黄色。
  • 我在评论中包含了我的 XML,请看一下。
  • 请立即查看。
【解决方案2】:
 1. <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:fitsSystemWindows="true">

        <include
            layout="@layout/co_ordinator_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

        <android.support.design.widget.NavigationView
            android:id="@+id/nav_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:background="#FFF"
            android:fitsSystemWindows="true"
            app:headerLayout="@layout/drawer_header_layout"
            app:itemIconTint="@color/colorPrimaryDark"
            app:itemTextColor="#000"
            app:menu="@menu/drawer_item">

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

【讨论】:

  • 好的 - 我不确定 #FFF 作为颜色...这真的有效吗?我知道它们的长度为 6(不带 alpha)或 8(带 alpha)。没见过FFF。如果这行得通,那么我学到了一些东西,但我总是对白色使用#FFFFFF,对红色使用#FF0000(事实上,我使用@color 资源并且从不硬编码颜色,但无论如何)。请尝试使用完全合格的#FFFFFF。
  • 很好奇。我以前从未见过 3 位颜色代码,但显然它们是一回事 - stackoverflow.com/questions/3108860/…。 ...但不确定 Android 是否接受它们。
猜你喜欢
  • 1970-01-01
  • 2019-03-11
  • 2023-01-17
  • 2013-11-16
  • 2021-07-23
  • 2013-08-15
  • 1970-01-01
  • 2016-08-14
  • 1970-01-01
相关资源
最近更新 更多