Могу ли я сделать текст элемента меню навигации отличным от других элементов?

Я использую NavigationView и меню в своем приложении. Я хочу, чтобы один из пунктов меню был другого цвета (значок и текст).

Я могу заставить значок показывать другой цвет, используя setItemIconTintList(null) и используя значки необходимых цветов. Есть ли способ сделать цвет текста одного элемента меню другим?


person Shlomi    schedule 16.04.2016    source источник
comment
мой ответ помог вам? Если да, то, пожалуйста, примите мой ответ   -  person Arun Shankar    schedule 18.04.2016


Ответы (2)


Вы можете использовать так:

//Change to your NavigationView Id
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);            

//change R.id.menu_item to your id
navigationView.getMenu().findItem(R.id.menu_item).setTitle(Html.fromHtml("<font color='#ff3824'>Settings</font>")); 
person Arun Shankar    schedule 16.04.2016
comment
Что ж, это действительно помогает. отлично! Однако это похоже на взлом. Я жду, чтобы увидеть, может ли быть более стандартный способ сделать это. - person Shlomi; 18.04.2016
comment
нет другого стандартного способа в навигации, о котором я знаю. Вы можете изменить цвет элементов комплексного меню, но, насколько я знаю, не отдельных элементов. - person Arun Shankar; 18.04.2016

Вдохновленный ответом DevTest, я в конечном итоге использовал SpannableString для установки текста с определенным цветом. Я создал для него метод util:

public static CharSequence getSpannableColorString (String text, int color) {
    SpannableString spanString = new SpannableString(text);
    spanString.setSpan(new ForegroundColorSpan(color),0, text.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

    return spanString;
}

Затем использовал его для установки заголовка моего MenuItem:

MenuItem menuItem = navigationView.getMenu().findItem(R.id.myItem);
menuItem.setTitle(getSpannableColorString(getString(R.string.itemText), getColor(R.color.itemColor)));
person Shlomi    schedule 18.04.2016
comment
приятно проголосовать за ответ, если он действительно вам помог :-) - person Arun Shankar; 21.04.2016
comment
Я думаю, что вариант SpannableString лучше... спасибо - person Shlomi; 23.04.2016
comment
конечно да. Но если мой ответ вам хоть как-то помог, мне тоже поможет голосование :-) - person Arun Shankar; 24.04.2016
comment
С этим проблем нет :-) - person Arun Shankar; 24.04.2016