Это изменит значок и цвет текста одного элемента меню из любого места (например, onResume).Код ниже прекрасно работает на 4.4.2 через (как минимум) пирог.Это кусочки отсюда и другие подобные темы.Некоторые примечания:
- Значок элемента меню можно нарисовать под названием «значок», но он не совсем корректно просто изменить его, как я делаю цвет текста - иногда значок (если есть)в XML появляется вместо.Кажется, это всегда работает.
- Она написана как статическая функция, поэтому ее можно вызывать из нескольких фрагментов;Вы можете легко сделать его членом и исключить аргумент активности в классе активности.
- Возможность рисования зависит от того, является ли он векторным или растровым для рисования для более старых API: код битовой карты (и нового API) являетсякомментарий;более новые API не нуждаются в определенной векторной функции рисования.
static public void setMenuItemProperties(AppCompatActivity activity,
MenuItem item,
int resIconDrawable, int resColor) {
int id = item.getItemId();
BottomNavigationItemView m = activity.findViewById(id);
TextView t1 = m.findViewById(R.id.smallLabel);
TextView t2 = m.findViewById(R.id.largeLabel);
t1.setTextColor(activity.getResources().getColor(resColor));
t2.setTextColor(activity.getResources().getColor(resColor));
Drawable d = VectorDrawableCompat.create(activity.getResources(), resIconDrawable, null);
//Drawable d = activity.getResources().getDrawable(resIconDrawable);
item.setIcon(d);
}
Вызовите так (из Activity), чтобы выбрать между двумя значками и цветами текста для пункта меню 3. (navigation
isBottomNavigationView.)
setMenuItemProperties(this, navigation.getMenu().getItem(3),
enabled ? R.drawable.ic_settings_red_24dp : R.drawable.ic_settings_redish_24dp,
enabled ? android.R.color.white : R.color.medium_dark_grey);