基本、みんな、グレー(デフォルト)のまま?
お馴染みGoogle純正「Gmail」アプリを観察していたら、「NavigationView(ドロワーメニュー)」の「アイコンの色」はグレー(デフォルト)のままだったので、アイコンの色は変えられないと思い込んでいた。
巷のアプリも、あまりアイコンの色を変更しているものがない、、、のだが、「Google Play」アプリを見ていたら、アイコンの色が様々でカラフルだった。
ってことは、項目を指定して、個別にアイコンの色を設定できるってことだよね?
以下のスクリーンショットみたいに。
(※設定アイコンだけがデフォルトのまま)
サンプルコード
「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」を前提としたサンプルコード)
サンプルアプリ
アプリの実動作・見栄えを自らの手で触れて確認したいという方は、以下のアプリ(=上記スクリーンショットのアプリ)を参考にしてみてほしい。
ドロワーメニューのアイコンがグレーのままよりも、ワンアクセントある方が、グッと感じが良くなったように思う。
シンプルなメモ帳は文字数もカウントする-カラーラベルや並べ替えを搭載した無料ノート-NOTEBOSS
【動作環境】
Android OS 5.0以上
Made in Japan.
© CUTBOSS
Producer & Director, Boss of the Barber.
Lead Programmer & Designer, Boss of the Barber.