こんにちは私はアンドロイドNavigationViewを使用しています。すべてのアイテムではなく、NavigationView の一部のアイテムに個別のテキストの色を付けたいです。または、NavigationView でアイテムを選択したときに、単一のアイテムのテキストの色を動的に変更したい (特定のアイテムのみ)。これどうやってするの?
2032 次
2 に答える
23
はい、できます私もやったことがあります。
まず、色を変更したい MenuItem を取得します
Menu m = navView.getMenu();
MenuItem menuItem = m.findItem(your_menu_id);
次に、スパン可能な色を適用します
SpannableString s = new SpannableString(menuItem.getTitle());
s.setSpan(new ForegroundColorSpan(Color.your_color), 0, s.length(), 0);
menuItem.setTitle(s);
それでおしまい..
以下のコードは、メニューのクリック時にテキストの色を動的に変更する 2 番目のソリューション用です。
navView.setNavigationItemSelectedListener(new
NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
SpannableString s = new SpannableString(menuItem.getTitle());
s.setSpan(new ForegroundColorSpan(Color.RED), 0, s.length(), 0);
menuItem.setTitle(s);
return false;
}
});
于 2015-06-27T08:05:56.270 に答える
0
私の知る限り、これは不可能です。これを達成する方法の例を見つけるために検索しましたが (あなたもそうだと思います)、見つけられませんでした。
あなたがやろうとしていることを実行するためにカスタムビューを作成することを本当にお勧めします(これはあなたの質問ではあまり詳しく説明されていないため、代替案を提案するのは少し難しいです)。または、SDK によって提供されるものを本当に使用したい場合は、OptionsMenu
(個々のメニュー項目をカスタマイズできるようにする必要があります) を使用できます。
編集:カスタムビューなしでこれを行うことが可能であることが判明しました。詳細については、moinkhan からの受け入れられた回答を参照してください。
于 2015-06-26T12:31:42.723 に答える