Мне нужно отключить оттенок цвета для некоторых значков в NavigationView
, потому что их цвет определяет тип категории. Как мне это сделать?
На рисунке ниже показана моя проблема:
Отключить цветовой оттенок в NavigationView только для указанных значков
Ответы (5)
navview.setItemIconTintList(null);
Удачи!
ColorTintList
применяется ко всем элементам в NavigationView
.
- person Шах; 02.04.2016
ColorTintList
в null
в NavigationView
и использовать DrawableCompat
для подкрашивания значков при создании меню, но это не работает. Все мои иконки стали черными.
- person Шах; 02.04.2016
Если вы хотите изменить цвет значка при выборе, ниже приведен возможный ответ:
Изменить цвет элемента представления навигации динамически Android
В противном случае вы можете установить
navview.setItemIconTintList(null);
это придаст оригинальные цвета иконкам. и вы можете использовать цветные и серые значки в соответствии с вашими требованиями.
Для тех, кто использует Kotlin, вот как это делается
val bottomNavigationView: BottomNavigationView = findViewById(R.id.bottomnavigationhome)
// * THIS ONE
bottomNavigationView.itemIconTintList = null
Menu menuNav = navigationView.getMenu();
MenuItem menuItem = menuNav.findItem(R.id.nav_subjects);
// Disable a tint color
menuItem.setChecked(false);
Я надеюсь, что это отвечает на ваш вопрос.
В случае, если это все еще актуально для кого-то, мы недавно нашли решение для аналогичной проблемы.
Хотя невозможно (по крайней мере, на уровнях API ‹ 26) задать собственный список оттенков для отдельных элементов, вы можете установить режим оттенка индивидуально. Это сработало для нас:
val itemsWithoutTint: List<Int> = listOf(12345)
for (i in 0 until getMenu().size()) {
val item = getMenu().getItem(i)
if (item.itemId in itemsWithoutTint) {
MenuItemCompat.setIconTintMode(item, PorterDuff.Mode.DST)
}
}
Установив для TintMode значение DST (https://developer.android.com/reference/android/graphics/PorterDuff.Mode), источник (в данном случае цвет оттенка) игнорируется, а пункт назначения (значок, который нужно тонировать) остается нетронутым.