Я пытаюсь показать значок рядом с элементом в моем меню для панели навигации, но по какой-то причине значок всегда отображается серым, а не исходным цветом (коричневым). Есть ли способ предотвратить это, чтобы показать исходный цвет значка?
MainActivity.java
public class MainActivity extends AppCompatActivity {
private DrawerLayout mDrawerLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
if (navigationView != null) {
setupDrawerContent(navigationView);
}
}
private void setupDrawerContent(NavigationView navigationView) {
navigationView.setNavigationItemSelectedListener(
new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
mDrawerLayout.closeDrawers();
return true;
}
});
}
}
drawer_view.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="Section">
<menu>
<item
android:id="@+id/navigation_item_1"
android:icon="@drawable/ic_browncircle"
android:title="Sub item 1" />
</menu>
</item>
</menu>
java
android
xml
android-support-library
MacaronLover
источник
источник
ic_browncircle
?.setColorFilter(MY_BROWN_COLOR)
эту точку зрения?Ответы:
Я нашел ответ здесь: https://stackoverflow.com/a/30632980/875249
Чтобы избежать ссылки, довольно просто:
mNavigationView.setItemIconTintList(null);
Это отключает все тонирование на основе состояний, но вы также можете указать свой собственный список. У меня это сработало!
Здесь вы можете получить подробную информацию о создании списка состояний цвета, но это тоже довольно просто: http://developer.android.com/reference/android/content/res/ColorStateList.html
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true" android:color="@color/primary" /> <item android:state_checked="false" android:color="@android:color/white" /> </selector>
источник
app:itemIconTint="@null"
но безуспешно.mNavigationView.setItemIconTintList(null);
Это ответ, который я так долго искал ...Использовать
mNavigationView.setItemIconTintList(null);
это правильно. Также, если все ваши значки в одной цветовой схеме (у меня все были белые), вы можете настроить через файл xml - app: itemIconTint = "@ android: color / white"
Мое дело:
<android.support.design.widget.NavigationView android:id="@+id/nav_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" android:clickable="true" app:headerLayout="@layout/nav_header_main" app:itemTextColor="@android:color/white" app:menu="@menu/activity_main_drawer" android:background="@android:color/black" app:itemIconTint="@android:color/white" />
источник
mNavigationView.setItemIconTintList(null);
удаляет iconTint по умолчанию из всех значков. Теперь, если у вас есть значок красного цвета, он будет красным, а iconTint не будет применен.Я пробовал нечто подобное в одном из своих приложений. И да, похоже, цвет значка не меняется. Но мне удалось найти другое решение. Вот мой
ic_browncircle.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" android:tint="@color/brown" > <size android:height="3dp" android:width="3dp" /> <solid android:color="@color/brown"/> </shape>
Я считаю, что это похоже на вас, но не имеет никакого эффекта и не меняет цвет.
Я сделал вот что.
navigationView.getMenu() .findItem(R.id. navigation_item_1) .getIcon() .setColorFilter(Color.parseColor("#b69260"), PorterDuff.Mode.SRC_ATOP);
И вроде работает. Вот результат.
источник
Если вы создаете проект с навигационным ящиком, который
Android Studio
предоставлен. В своем классе Main Activity вы можете просто добавить эту строку кодаnavigationView.setItemIconTintList(null);
в свойonCreate
метод. Как это;NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); navigationView.setItemIconTintList(null); // <----- HERE setupDrawerContent(navigationView);
источник
Вы можете попробовать использовать тонированную вытяжку, не уверен, что она работает ниже 5.0.
Создайте чертеж и добавьте следующий код.
<?xml version="1.0" encoding="utf-8"?> <bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/ic_browncircle" android:tint="@color/brownColor"/>
А затем измените свой пункт меню на тот, который вы только что создали. Если это не сработает, я не уверен в других решениях. Вы можете попробовать эту библиотеку: https://github.com/mikepenz/MaterialDrawer Я часто использую ее в своих проектах.
источник
Просто добавьте одну строку в xml
источник
app:itemIconTint="@null"
Каким-то образом этот код не работает MainActivity.java
NavigationView.setItemIconTintList(null); // not working
так что вы можете использовать это.
MainActivity.java
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); navigationView.setItemIconTintList(null); // <-- HERE add this code for icon color
источник
Добавь это
android:tint="@color/colorPrimary"
источник
Я нашел решение.
1) Перейдите на вкладку Дизайн
2) Нажмите на navView
3) Найдите элемент в свойствах
4) Напишите
null
и нажмитеEnterисточник