kojiko-android’s blog

開発中にハマった時の解決策や、忘れがちなことを残しておきます。

Toolbarのメニューアイコンの色を変える方法

Toolbarの右側に並ぶメニューアイコンの色を変える方法です

アプリの外観を動的に変える機能を持ったアプリなどは、
メニューアイコンの色も変えると、統一感や、洗練された印象を与えることができます。

メニューアイコンは、以下の方法で、色や透明度を変えることができます。

Toolbar yourToolbar;    //    Toolbarの参照

Menu menu = yourToolbar.getMenu();
            
            //    Menuオブジェクトを取り出し、

        for (int i = 0;i < menu.size();i++) {

            MenuItem item = menu.getItem(i);

      //    さらに、各アイテムを取り出します

            Drawable drawable = item.getIcon();

      //    アイテムのDrawableを取り出し、

            drawable.setColorFilter(Color.Red, PorterDuff.Mode.SRC_ATOP);
            drawable.setAlpha(205);

      //    外観を調整

            item.setIcon(drawable);

      //    再びセットします

        }

getIconの際に、メニューアイテムにアイコンを設定していないとエラーになりますのでご注意ください。
nullかどうかのチェックをお願いします。

カラーフィルターをかけるメソッド、
setColorFilter(Color.Red, PorterDuff.Mode.SRC_ATOP)
例では赤を指定しています。
イメージビュー等のカラーフィルターと異なり、引数が2つあります。
1つめに色を指定し、2つめに
PorterDuff.Mode.SRC_ATOP
を指定することで、アイコンの不透明部分に色を乗せることができます。

setAlpha(205)
は、その名の通り透明度をセットします。
不透明の80%の透明度に指定しています。