2017-04-16 4 views
0

メニュー項目の色をColor.WHITEに色分けしようとしていますが、何らかの理由で正しく機能しません。私がやりたいすべてが変更されたときにこれが起こった理由アクションバーのメニュー項目が適切に色付けされていません

enter image description here

を着色する前に

enter image description here

Drawable drawable = menu.findItem(R.id.action_info).getIcon(); 
    drawable.setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_IN); 
    menu.findItem(R.id.action_info).setIcon(drawable); 

を着色した後、私は理解していませんアイコンcolou rを灰色から白色に変える。

答えて

1

DrawableCompatと関連があるかもしれません。それはあなたがしたいrecolouringのまさにタイプを指定することができますように私はいつも(SRC_INはほとんど私が達成したい結果をフィット)

このようにそれを変更しようと、PorterDuffとカラーフィルターを使用して着色します:

Drawable drawable = menu.findItem(R.id.action_info).getIcon(); 
drawable.setColorFilter(Color.GREEN, PorterDuff.Mode.SRC_IN); 
menu.findItem(R.id.action_info).setIcon(drawable); // Actualy, we don't need to do this 

編集:

です。この効果は、使用している画像によって引き起こされます。私は不透明度が組み込まれているデフォルトのアイコンic_menu_info_detailsを使用していると思います。必要に応じて色を付けるために独自のアイコンを使用する方が良いでしょう。

基本的には、同じアイコンを、不透明ではありません。そして、このPorterDuffメソッドは期待どおりに動作します(おそらく以前のコードも同様です)。

アイコンを簡単に見つけてプロジェクトに追加できます。

オプション1:

オプション2:

  • ベクトル描画可能ファイルを使用すると、画像も各デバイスで自動的に拡大/縮小されます。

  • Newに描画可能なフォルダ

  • 移動をクリックしてください - >Vector Asset

  • いけない変更することを忘れ

変更アイコンボタンをクリックして、情報アイコンを見つけますmenu.xml新しいアイコンを使用するように、

関連する問題