Cómo dar color a los elementos del menú para el cajón de navegación?
Estaba creando el cajón de la navegación y vi playtore tienen iconos coloreados del menú quiero saber cómo puedo hacer esto. Intenté aplicar colores por colorFilter en iconos de menú pero la aplicación se cierra
- Cómo mostrar el menú de opciones en android 4.2
- Cómo cambiar el texto del elemento de menú Color del tema holo en Android?
- Cómo establecer una etiqueta en MenuItem?
- ¿Qué se debe devolver, verdadero o falso para onOptionsItemSelected ()?
- Android MenuItem Obtener el método de showAsAction
Este es mi codigo
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <group android:id="@+id/grp1" android:checkableBehavior="single"> <item android:id="@+id/navigation_songs" android:checked="true" android:icon="@drawable/ic_audiotrack_white_24dp" android:title="@string/songs" /> <item android:id="@+id/navigation_albums" android:icon="@drawable/ic_album_white_24dp" android:title="@string/albums" /> <item android:id="@+id/navigation_artist" android:icon="@drawable/ic_person_white_24dp" android:title="@string/artists" /> <item android:id="@+id/navigation_playlist" android:icon="@drawable/ic_playlist_play_white_24dp" android:title="@string/playlist" /> </group> <group android:id="@+id/grp2" android:checkableBehavior="none"> <item android:id="@+id/navigation_about" android:icon="@drawable/ic_info_white_24dp" android:title="@string/about" /> <item android:id="@+id/navigation_settings" android:icon="@drawable/ic_settings_white_24dp" android:title="@string/settings" /> </group> </menu>
- Menú emergente personalizado de Android con conmutador
- Android - Activación de MenuItems por código
- Configuración de itemId en el menú de opciones
- Cómo comprobar si el teléfono android tiene botón de menú de hardware en android 2.1
- Cómo obtener un MenuItem por id
- Android: Icono de la aplicación como botón Arriba no funciona
- Cómo configurar el color del icono de MenuItem?
- Cómo implementar el menú Radial Pie
-
Para pincelar todos los iconos en un color particular, es necesario agregar la
app:itemIconTint
en suNavigationView
:<android.support.design.widget.NavigationView ........ app:itemIconTint="<your color>"/>
-
Para cepillar tus iconos en sólo 2 colores :
Crear un selector:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="#0000FF" android:state_checked= "true" /> <item android:color="#FF0000" /> </selector>
Y aplicarlo como una
app:itemIconTint
en suNavigationView
:<android.support.design.widget.NavigationView ........ app:itemIconTint="@drawable/tint_color_selector"/>
Último paso – para agregar
android:checked="true"
a losMenuItems
en el menú de su cajón xml que desea pincel diferente:<item android:id="@+id/nav_slideshow" android:checked="true" android:icon="@drawable/ic_menu_slideshow" android:title="Slideshow" />
-
Para pinchar todos los iconos en diferentes colores, como Google tiene en Google Play:
Deshabilitar el tintado de sus iconos:
navigationView.setItemIconTintList(null);
Añadir iconos que desea
res/drawable
y especificarlos comoandroid:icon
en el xml de su menú. (Puedo recomendar un buen servicio para los iconos de Android icons8.com/web-app/new-icons/android )En lugar de cargar nuevos iconos de colores, puede pintar los existentes, pero es muy hacky:
Drawable oldIcon = navigationView .getMenu() .findItem(R.id.nav_gallery) .getIcon(); if (!(oldIcon instanceof BitmapDrawable)) { return; } Bitmap immutable = ((BitmapDrawable)oldIcon).getBitmap(); Bitmap mutable = immutable.copy(Bitmap.Config.ARGB_8888, true); Canvas c = new Canvas(mutable); Paint p = new Paint(); p.setColor(Color.RED); p.setColorFilter(new PorterDuffColorFilter(Color.RED, PorterDuff.Mode.MULTIPLY)); c.drawBitmap(mutable, 0.f, 0.f, p); BitmapDrawable newIcon = new BitmapDrawable(getResources(), mutable); navigationView .getMenu() .findItem(R.id.nav_gallery) .setIcon(newIcon);
¡Cuidado! En
res/drawables-v21
en el proyecto de plantilla, Google utilizaVectorDrawable
s en lugar deBitmapDrawables
antiguo, por lo que este código no funcionará allí.
Espero que ayude.
- App missing en el Android Market
- ¿Necesito un dispositivo Android real para desarrollar una aplicación de Android para el mercado?