Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Icono de elemento del cajón de navegación que no muestra el color original

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 manera de evitar que esto suceda para mostrar el color original del icono?

MainActivity.java

  • Enums y la anotación android intDef
  • Error: Error al recuperar el padre del elemento: No se encontró ningún recurso que coincida con el nombre dado 'Widget.AppCompat.ActionButton'
  • Cómo configurar el recuento de notificaciones no leídas en NavigationView de DrawerLayout?
  • "Campo se puede convertir a una variable local" aparece al configurar el color de la barra de acción
  • NavigationView: ¿cómo insertar divisor sin subgrupo?
  • ¿Por qué se llama DialogFragment.onCreateView cuando se está destruyendo la actividad?
  • 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> 

    Introduzca aquí la descripción de la imagen

  • SQLite: No se puede enlazar argumento en el índice 1 porque el índice está fuera de rango. La sentencia tiene 0 parámetros
  • ¿Alternativa a AbsoluteLayout en Android?
  • Establecer una vista de texto encima de un fragmento de mapa
  • Demora en la transmisión de audio
  • Error de mapa de bits incorrecto al configurar Uri
  • ¿Es posible descompilar un archivo .apk de Android?
  • 5 Solutions collect form web for “Icono de elemento del cajón de navegación que no muestra el color original”

    He encontrado la respuesta aquí: https://stackoverflow.com/a/30632980/875249

    Para evitar el enlace es bastante sencillo:

      mNavigationView.setItemIconTintList(null); 

    Esto deshabilita todos los tonos basados ​​en estados, pero también puede especificar su propia lista. ¡Funciono muy bien para mi!

    Aquí es donde puede obtener los detalles sobre la creación de una lista de estado de color, pero su bastante simple también: 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> 

    Utilizar

      mNavigationView.setItemIconTintList(null); 

    es lo correcto. También si todos sus iconos en un esquema de color (i tenía todo blanco) puede configurar a través de archivo xml – app: itemIconTint = "@ android: color / blanco"

    Mi caso:

     <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" /> 

    He intentado algo similar en una de mis aplicaciones. Y sí, parece que el color del icono no cambia. Pero he logrado hacer con otra solución. Aquí está mi 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> 

    Que creo que es algo similar a usted, pero no tiene ningún efecto y no cambia el color.

    Así que lo que hice fue esto.

     navigationView.getMenu() .findItem(R.id. navigation_item_1) .getIcon() .setColorFilter(Color.parseColor("#b69260"), PorterDuff.Mode.SRC_ATOP); 

    Y parece que funciona. Aquí está el resultado.

    Introduzca aquí la descripción de la imagen

    Puede probar con un dibujante tintado, no está seguro si funciona debajo de 5.0.

    Cree un dibujable y agregue el código siguiente.

     <?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"/> 

    Y luego cambia el elemento del menú dibujable al que acabas de crear. Si eso no funciona, entonces no estoy seguro de ninguna otra solución. Puede probar esta biblioteca: https://github.com/mikepenz/MaterialDrawer Lo uso mucho en mis proyectos.

    Sólo tiene que añadir una línea en xml

    app:itemIconTint="@color/white"

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.