Estoy tratando de mostrar un icono junto a un elemento dentro de mi menú para mi cajón de navegación, pero por alguna razón, el icono siempre aparece en gris en lugar del color original (marrón). ¿Hay alguna forma de evitar que esto suceda para mostrar el color original del icono?
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
fuente
fuente
ic_browncircle
?.setColorFilter(MY_BROWN_COLOR)
esa vista?Respuestas:
Encontré la respuesta aquí: https://stackoverflow.com/a/30632980/875249
Para evitar el enlace es bastante sencillo:
Esto desactiva todos los tintes basados en estado, pero también puede especificar su propia lista. ¡Funciono muy bien para mi!
Aquí es donde puede obtener los detalles sobre cómo crear una lista de estados de color, pero también es bastante simple: http://developer.android.com/reference/android/content/res/ColorStateList.html
fuente
app:itemIconTint="@null"
pero sin éxito.mNavigationView.setItemIconTintList(null);
Esta es la respuesta que estaba buscando durante tanto tiempo ...Utilizar
es lo correcto. Además, si todos sus iconos están en un esquema de color (tenía todo blanco), puede configurarlo a través del archivo xml - app: itemIconTint = "@ android: color / white"
Mi caso:
fuente
mNavigationView.setItemIconTintList(null);
elimina el ícono predeterminadoTinte de todos los íconos. Ahora, si tiene su icono en color rojo, aparecerá rojo, no se aplicará iconTint.He intentado algo similar en una de mis aplicaciones. Y sí, parece que el color del icono no cambia. Pero me las arreglé para hacer con otra solución. Aquí está mi
ic_browncircle.xml
Lo que creo que es algo similar a ti, pero no tiene ningún efecto y no cambia el color.
Entonces lo que hice es esto.
Y parece estar funcionando. Aquí está el resultado.
fuente
Si crea un proyecto con el cajón de navegación que
Android Studio
proporciona. En su clase de Actividad principal, simplemente puede agregar esta línea de códigonavigationView.setItemIconTintList(null);
a suonCreate
método. Me gusta esto;fuente
Puede intentar usar un dibujable tintado, no estoy seguro si funciona por debajo de 5.0.
Crea un dibujo y agrega el siguiente código.
Y luego cambie su elemento de menú dibujable al que acaba de crear. Si eso no funciona, entonces no estoy seguro de ninguna otra solución. Puedes probar esta biblioteca: https://github.com/mikepenz/MaterialDrawer La uso mucho en mis proyectos.
fuente
Solo agregue una línea en xml
fuente
app:itemIconTint="@null"
De alguna manera, este código no funciona MainActivity.java
para que puedas usarlo.
MainActivity.java
fuente
Agrega esto
fuente