2016-04-19 20 views
0

私はいくつかのメニュー項目を持つナビゲーションドロワーを持っています。メニュー項目の1つのメニューアイコンとテキストの色を動的に変更しようとしています。コードに続いて、ナビゲーション引き出しを持って活動クラスのいずれかのonCreate()である:私はメニューのタイトル名とフォントの色を設定できますがアイコンをメニュー項目に設定する

public void changeItemWiseTextProperties(Menu menu) { 
    menu.findItem(R.id.nav_testing). 
     setTitle(Html.fromHtml("<font color='#3b9ada'>Testing</font>")); 

    menu.findItem(R.id.nav_testing). 
     setIcon(ContextCompat.getDrawable(this,R.drawable.icon_testing_activated)); 
} 

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
navigationView.setNavigationItemSelectedListener(this); 
changeItemWiseTextProperties(navigationView.getMenu()); 

そしてここでは、メソッドの定義です項目は正常に終了しましたが、メニューアイコンには何の影響もありません。私はそれを変更することはできません。それはなぜそうですか?

+0

利用invalidateOptionsMenu();メニューをリフレッシュするために –

+0

@ JhamanDas、それを試みました。それはうまくいかなかった。 'changeItemWiseTextProperties()'メソッドでメニューアイコンを設定した後に配置しました –

答えて

0

私は自分のコードをチェックしicon.toStringを(印刷)ログに:前と、プログラムでメニューアイコンを変更した後menu.findItem(R.id.nav_testing).getIcon().toString()

menu.findItem(R.id.nav_testing).getIcon()...

結果?私は2つの異なる値を得ていました。アイコンが変更されたことを意味します。しかし、なぜメニューに反映されていないのですか?

理由:私は2つのアイコンを持っていました - 色以外のすべての側面で同じです。最初はicon_testing(灰色)だったので、それをicon_testing_activated(青色)に設定していました。

グレーは選択されていないメニュー項目のデフォルトの色ですが、青色は選択したメニュー項目のデフォルトの色です。青色のアイコン(icon_testing_activated)を設定していたメニュー項目は選択解除されていたため、デフォルトの選択されていない色の灰色に変わりました。そして2つのアイコンは色を除いて同じなので、私はsetIcon()メソッドが動作していないと考えました。

ソリューション:私はプログラム的に、私は色の変化をしていたために、メニュー項目をチェックする:

menu.findItem(R.id.nav_testing).setChecked(true); 
関連する問題