在Android Studio默认模板中更改导航抽屉图标的颜色

ojo*_*ifu 49 android navigation-drawer

Android Studio中新的默认导航抽屉活动模板

在此输入图像描述

在菜单文件中定义其标题和图标,activity_main_drawer如下所示:

<group android:checkableBehavior="single">
    <item
        android:id="@+id/nav_camara"
        android:icon="@drawable/ic_action_emo_cool"
        android:title="Import" />
    <item
        android:id="@+id/nav_gallery"
        android:icon="@android:drawable/ic_menu_gallery"
        android:title="Gallery" />
    <item
        android:id="@+id/nav_slideshow"
        android:icon="@android:drawable/ic_menu_slideshow"
        android:title="Slideshow" />
        ...
Run Code Online (Sandbox Code Playgroud)

我的示例中的第一项使用了一个红色图标:

在此输入图像描述

但是当我运行应用程序时,图标的颜色仍然是黑色.我已经测试了这个蓝色,绿色,黄色和紫色图标,但结果是一样的.

在此输入图像描述

我读到工具栏应该使用的地方,ThemeOverlay.AppCompat.Dark.ActionBar我的应用程序已在styles.xml文件中使用它:

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
Run Code Online (Sandbox Code Playgroud)

最初我认为这与Android Studio的缓存功能有关,所以我使缓存失效并重新启动Android Studio而没有运气.

ojo*_*ifu 117

根据@ MD的评论,我需要做的就是添加:

app:itemIconTint="@color/my_desired_colour"
Run Code Online (Sandbox Code Playgroud)

NavigationView(它位于activity_main.xml布局文件中)默认色调为黑色,但您可以使用更暗的黑色#000000

 <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"
    app:headerLayout="@layout/nav_header_main"
    app:itemIconTint="#000000"
    app:menu="@menu/activity_main_drawer" />
Run Code Online (Sandbox Code Playgroud)

  • 谢谢:)我将如何为除一个图标外的所有图标设置一个色调。对于一个特定的图标,我希望将色调设置为空(即)一个特定的菜单项图标在所有状态下均以全色显示 (2认同)
  • 您会在** menu **文件夹中找到自己的`NavigationView`,然后将`app:itemIconTint =“#000000”`放入注:“#000000” **您可以根据需要更改任何颜色** (2认同)

Pab*_*rra 37

创建一个新的风格:

<style name="DrawerIconStyle" parent="Widget.AppCompat.DrawerArrowToggle">
    <item name="color">@android:color/red</item>
</style>
Run Code Online (Sandbox Code Playgroud)

你的主题是:

<item name="drawerArrowStyle">@style/DrawerIconStyle</item>
Run Code Online (Sandbox Code Playgroud)


Ben*_*ben 7

如果你想动态设置它,你可以使用:

ActionBarDrawerToggle actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.open_drawer, R.string.close_drawer);

actionBarDrawerToggle.getDrawerArrowDrawable().setColor(getResources().getColor(R.color.colorAccent));
Run Code Online (Sandbox Code Playgroud)


Nel*_*ale 6

navigationView.setItemIconTintList(null);在 中调用了此方法onCreate,以便我可以像这样覆盖导航抽屉中图标项目的默认颜色

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_places);
    drawer = findViewById(R.id.drawer_layout);
    NavigationView navigationView = findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);
    navigationView.setItemIconTintList(null);
}
Run Code Online (Sandbox Code Playgroud)

android:iconTint="@color/metallic_blue"然后我使用它更改了导航抽屉中每个图标的颜色activity_places_drawer.xml

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

<group android:checkableBehavior="single">
    <item
        android:id="@+id/invite"
        android:icon="@drawable/ic_people_orange_24dp"
        android:title="@string/menu_invite"
        android:fontFamily="@font/roboto_medium" />
</group>
Run Code Online (Sandbox Code Playgroud)

希望这个答案有帮助。


Hri*_*Das 5

只需使用这段代码:

navigationView.setItemIconTintList(null);
Run Code Online (Sandbox Code Playgroud)