LoginSignup
0
1

More than 5 years have passed since last update.

【Android】「NavigationView(ドロワーメニュー)」の「アイコンの色」を変更する

Last updated at Posted at 2017-11-30

基本、みんな、グレー(デフォルト)のまま?

お馴染みGoogle純正「Gmail」アプリを観察していたら、「NavigationView(ドロワーメニュー)」の「アイコンの色」はグレー(デフォルト)のままだったので、アイコンの色は変えられないと思い込んでいた。

巷のアプリも、あまりアイコンの色を変更しているものがない、、、のだが、「Google Play」アプリを見ていたら、アイコンの色が様々でカラフルだった。

ってことは、項目を指定して、個別にアイコンの色を設定できるってことだよね?

以下のスクリーンショットみたいに。

Screenshot_2017-11-30-23-45-26.png

(※設定アイコンだけがデフォルトのまま)

サンプルコード

「NavigationView」から「Menu」を取得し、着色したい「Item」をID指定し、さらに「Icon」を取得、で、「setColorFilter」する。

        // get navigation drawer
        NavigationView navigationDrawer = findViewById(R.id.navigation_drawer);

        // set color part 1
        navigationDrawer.getMenu().findItem(R.id.menu_drawer_drive).getIcon()
                .setColorFilter(0xff536dfe, PorterDuff.Mode.SRC_IN);

        // set color part 2
        navigationDrawer.getMenu().findItem(R.id.menu_drawer_drive).getIcon()
                .setColorFilter(Color.parseColor("#536dfe"), PorterDuff.Mode.SRC_IN);

        // set color part 3
        navigationDrawer.getMenu().findItem(R.id.menu_drawer_back_up).getIcon()
                .setColorFilter(ContextCompat.getColor(this, R.color.colorAccent), PorterDuff.Mode.SRC_IN);

        // set color part 4
        navigationDrawer.getMenu().findItem(R.id.menu_drawer_restore).getIcon()
                .setColorFilter(getColor(R.color.colorAccent), PorterDuff.Mode.SRC_IN);

「setColorFilter」の第一引数(int color)は、敢えて、4パターンを書いてみた。

なんでか、いつも実装時に迷うんだよね。

「part 4」の「getColor」使用時は、「minSdkVersion」に要注意。

こういうこと。

    // set color part 4
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        navigationDrawer.getMenu().findItem(R.id.menu_drawer_restore).getIcon()
                .setColorFilter(getColor(R.color.colorAccent), PorterDuff.Mode.SRC_IN);
    }

(※「minSdkVersion 21:Lollipop」を前提としたサンプルコード)

サンプルコード(おまけ)

「NavigationView」の属性で、「app:itemIconTint」を設定すると、「全てのアイコンの色」を同じ色に変更できる。

    <!-- Navigation Drawer -->
    <android.support.design.widget.NavigationView
        android:id="@+id/navigation_drawer"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:headerLayout="@layout/navigation_drawer_header"
        app:menu="@menu/navigation_drawer"
        app:itemIconTint="?attr/colorAccent" />

(※「minSdkVersion 21:Lollipop」を前提としたサンプルコード)

サンプルアプリ

アプリの実動作・見栄えを自らの手で触れて確認したいという方は、以下のアプリ(=上記スクリーンショットのアプリ)を参考にしてみてほしい。

ドロワーメニューのアイコンがグレーのままよりも、ワンアクセントある方が、グッと感じが良くなったように思う。

ic_launcher.png
シンプルなメモ帳は文字数もカウントする-カラーラベルや並べ替えを搭載した無料ノート-NOTEBOSS

【動作環境】
Android OS 5.0以上

Made in Japan.
© CUTBOSS
Producer & Director, Boss of the Barber.
Lead Programmer & Designer, Boss of the Barber.

header_2_ja.png

参考記事

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1