11

こんにちは私はアンドロイドNavigationViewを使用しています。すべてのアイテムではなく、NavigationView の一部のアイテムに個別のテキストの色を付けたいです。または、NavigationView でアイテムを選択したときに、単一のアイテムのテキストの色を動的に変更したい (特定のアイテムのみ)。これどうやってするの?

4

2 に答える 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 に答える