Имеется NavigationView
в котором подключаю menu
c items
.
Можно ли как то задать что бы цвет например первого элемента был белый, а второго синий?
Т.е. не при нажатии а статически цвета items
были разные.
NavigationView.xml:
<android.support.design.widget.NavigationView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:id="@+id/navigation_view"
app:menu="@menu/navigation_items"
app:itemTextColor="@color/my_text_color">
Меню:
<menu>
<item
android:id="@+id/my_id1"
android:title="Элемент1"/>
<item
android:id="@+id/my_id2"
android:title="Элемент2"/>
</menu>
Я согласен с @ЮрийСПб абсолютно, просто предложу грязный и менее грязный хак, эту мысль можно развить, вот примеры:
Находим NavigationView , вытаскиваем Menu потом нужный Item, и красим в коде сам текст. Можно через UTF-16 сделать кстати я никогда такого не пробовал, уверен что можно, в целом мысль ясна.
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.getMenu().getItem(1).setTitle(Html.fromHtml("<font color='#fff'>NotLikeAll</font>"));
Находим NavigationView, из Menu вытаскиваем нужный MenuItem (второй), используем класс SpannableString и метод setSpan, он ждет Object. Скармливаем ему ForegroundColorSpan и это более лояльно, ибо он расширен CharStyle, который имеет Paint для раскраски, поэтому обратная генерация кода в UTF-16 будет на сознании AndroidSDK, и от этого вроде легче, ну чуть чуть... наверно..)
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
MenuItem item_1 = navigationView.getMenu().getItem(1);
SpannableString s = new SpannableString(item_1.getTitle());
s.setSpan(new ForegroundColorSpan(Color.GREEN), 0, s.length(), 0);
item_1.setTitle(s);
Простого способа из коробки нет. Вы можете задать только значения для всех элементов сразу.
Придётся программно брать каждый элемент в onPrepareOptionsMenu по их ID и назначать там.
Плюс попробуйте посмотреть тут. Говорят, что можно собственную разметку для каждого элемента назначить - так будет ещё больше контроля. Но кода всё одно будет порядочно.
Долго искал способ динамически подменивать цвет текста (и иконок), в зависимости от темы. Сейчас использую такой способ сразу для всех пунктов. Ничего не мешает использовать его и по-штучно. Из преимуществ - сразу задаем любой цвет для любого состояния (нажато/выделено/выбрано/неактивно).
int[][] states = new int[][]{
new int[]{-android.R.attr.state_checked}, // default
new int[]{android.R.attr.state_checked} // checked
};
int[] colors = new int[]{
AppConst.color_text_small,
AppConst.color_accent
};
ColorStateList color_menu_item = new ColorStateList(states, colors);
navigationView.setItemTextColor(color_menu_item);
navigationView.setItemIconTintList(color_menu_item);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Например, Map<String*, Integer> map = new TreeMap<String, Integer>();, там где * можно поставить < <String,String>, Integer > например?
Есть класс Java, который распаковывает архивы в каталогеЕсли архив поврежден, то открывается окно winrar с содержимым "Архив поврежден или имеет...