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

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

  • Programar '? SelectableItemBackground' en la vista de Android
  • SetCompoundDrawablesWithIntrinsicBounds (int, int, int, int) no funciona
  • Android - Cambiar el tema de la aplicación en onClick
  • ImageView src con el selector extraíble ignora el estado habilitado
  • Android: Añadir una vista de texto al diseño lineal mediante programación
  • Pregunta teórica: cargar el archivo XML-Layout externo en Android
  • No se permite el atributo de manifiesto de Android aquí
  • Contenido detrás de CoordinatorLayout AppBarLayout
  • 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.