Отключить цветовой оттенок в NavigationView только для указанных значков

Мне нужно отключить оттенок цвета для некоторых значков в NavigationView, потому что их цвет определяет тип категории. Как мне это сделать?
На рисунке ниже показана моя проблема:
введите здесь описание изображения


person Шах    schedule 02.04.2016    source источник
comment
Вы нашли решение?   -  person Thomas Vos    schedule 06.10.2016
comment
Нет, к сожалению.   -  person Шах    schedule 10.10.2016
comment
@ Воск, ты уже нашел решение? Мне нужно использовать два цвета для одного элемента, а остальные серые.   -  person sanjeev    schedule 05.04.2018
comment
@sanjeev Я уже не помню, честно, но, кажется, вы можете подготовить только несколько ColorTintList и установить каждый элемент вручную (в коде)   -  person Шах    schedule 05.04.2018
comment
@Шах, да, мы могли бы это сделать .. но как установить цвет значка по умолчанию для выбранного? ты говоришь мне, что это невозможно?   -  person sanjeev    schedule 05.04.2018
comment
Кроме того, было бы невозможно использовать несколько цветов в ColorTintLists для одного проверенного элемента, к сожалению, верно?   -  person sanjeev    schedule 05.04.2018
comment
@sanjeev да, конечно, ты можешь установить как хочешь   -  person Шах    schedule 05.04.2018


Ответы (5)


navview.setItemIconTintList(null);

Удачи!

person Robert Banyai    schedule 02.04.2016
comment
Отключает цветовой оттенок для всех предметов. - person Шах; 02.04.2016
comment
Извини, я виноват. Затем вы можете использовать такой селектор: "> stackoverflow.com/questions/30967851/ - person Robert Banyai; 02.04.2016
comment
Моя проблема в том, что мне нужно использовать оттенок не для всех элементов, а только для указанных, которые не определяют какую-либо категорию. ColorTintList применяется ко всем элементам в NavigationView. - person Шах; 02.04.2016
comment
Вы пытались получить пункт меню программно и изменить оттенок пункта? - person Robert Banyai; 02.04.2016
comment
Я пытаюсь установить ColorTintList в null в NavigationView и использовать DrawableCompat для подкрашивания значков при создании меню, но это не работает. Все мои иконки стали черными. - person Шах; 02.04.2016

Если вы хотите изменить цвет значка при выборе, ниже приведен возможный ответ:

Изменить цвет элемента представления навигации динамически Android

В противном случае вы можете установить

navview.setItemIconTintList(null);

это придаст оригинальные цвета иконкам. и вы можете использовать цветные и серые значки в соответствии с вашими требованиями.

person Android Geek    schedule 02.04.2016
comment
Мне нужны разные списки состояний цвета для разных предметов - person Шах; 02.04.2016
comment
И я не знаю, как это сделать. - person Шах; 02.04.2016
comment
как при выборе и отмене выбора? - person Android Geek; 02.04.2016
comment
Сейчас выложу картинку, чтобы было понятно (не знаю, как сказать по-английски) - person Шах; 02.04.2016

Для тех, кто использует Kotlin, вот как это делается

val bottomNavigationView: BottomNavigationView = findViewById(R.id.bottomnavigationhome)

// * THIS ONE 
bottomNavigationView.itemIconTintList = null
person John Melody Melissa    schedule 22.02.2021

 Menu menuNav = navigationView.getMenu();
 MenuItem menuItem = menuNav.findItem(R.id.nav_subjects);

 // Disable a tint color
 menuItem.setChecked(false);

Я надеюсь, что это отвечает на ваш вопрос.

person ntthnch    schedule 29.12.2016

В случае, если это все еще актуально для кого-то, мы недавно нашли решение для аналогичной проблемы.

Хотя невозможно (по крайней мере, на уровнях 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), источник (в данном случае цвет оттенка) игнорируется, а пункт назначения (значок, который нужно тонировать) остается нетронутым.

person Johannes Schamburger    schedule 20.07.2021