2016-01-19 31 views
9

Desidero inserire la mia icona personalizzata nel menu nel cassetto di navigazione. Tuttavia, quando eseguo l'applicazione mostra solo un'ombra di icona. Come faccio a mostrare l'immagine correttamente?L'icona del menu del carrello di navigazione non viene visualizzata correttamente

enter image description here

Ecco il file XML per il menu activity_main_drawer.xml:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <group android:checkableBehavior="single"> 
     <item 
      android:id="@+id/recent_picture" 
      android:icon="@mipmap/ic_recent" 
      android:title="Import" /> 
     <item 
      android:id="@+id/nav_gallery" 
      android:icon="@drawable/ic_menu_gallery" 
      android:title="Gallery" /> 
     <item 
      android:id="@+id/nav_slideshow" 
      android:icon="@drawable/ic_menu_slideshow" 
      android:title="Slideshow" /> 
     <item 
      android:id="@+id/nav_manage" 
      android:icon="@drawable/ic_menu_manage" 
      android:title="Tools" /> 
    </group> 
</menu> 

Ecco il layout xml con la vista di navigazione:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:openDrawer="start"> 

    <include 
     layout="@layout/app_bar_main" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <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:fitsSystemWindows="true" 
     app:headerLayout="@layout/nav_header_main" 
     app:menu="@menu/activity_main_drawer" /> 
</android.support.v4.widget.DrawerLayout> 

C'è un altro drawables.xml file trovati nella cartella dei valori.

<resources xmlns:android="http://schemas.android.com/apk/res/android"> 
<item name="ic_recent_picture" type="drawable">@mipmap/ic_recent</item> 
<item name="ic_menu_gallery" type="drawable">@drawable/ic_menu_gallery</item> 
<item name="ic_menu_slideshow" type="drawable">@android:drawable/ic_menu_slideshow</item> 
<item name="ic_menu_manage" type="drawable">@android:drawable/ic_menu_manage</item> 
<item name="ic_menu_share" type="drawable">@android:drawable/ic_menu_share</item> 
<item name="ic_menu_send" type="drawable">@android:drawable/ic_menu_send</item> 

+0

Provare mettere il immagine nella cartella 'drawable' –

+0

@cwfei, ho provato a mettere l'immagine nella cartella drawable ma restituisce lo stesso errore .. – michelletbs

+0

Hai aggiornato il riferimento nel tuo file xml come' android: icon = "@ drawable/ic_recent "' quando hai spostato l'immagine nella cartella drawable? –

risposta

0

Hai provato a passare a un'altra immagine per vedere se sta visualizzando?

<item name="ic_recent_picture" type="drawable">@mipmap/ic_recent</item> 

Path @mipmap contiene un'immagine corretta?

+0

Ho sostituito con l'immagine che ha pre-generato dal modello, il suo funzionamento. android: icon = "@ drawable/ic_menu_gallery", ma se metto la mia immagine personalizzata, allora visualizzerà il quadrato grigio. – michelletbs

+0

Metti l'immagine nella cartella disegnabile ... –

+0

Ciao @Weverton Peron, ora funziona inserendo questo codice per rimuovere la modalità tinta dall'icona. navigationView.setItemIconTintList (null); – michelletbs

23

Ora funziona rimuovendo l'effetto tinta dall'icona di setItemIconTintList(null). Inserisci la riga di codice sotto lo navigationView.

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
navigationView.setItemIconTintList(null); 
navigationView.setNavigationItemSelectedListener(this); 
+1

Grazie Michelletbs, navigationView.setItemIconTintList (null); risolto il mio problema – Sally

+0

Ottima soluzione, funziona molto bene. Sembra essere retrocompatibile, il pre-lecca-lecca funziona ancora. Grazie! – TryTryAgain

+0

Ottimo! Un'altra soluzione, ma solo per interscambiare 2 colori è qui: http://stackoverflow.com/questions/30967851/change-navigation-view-item-color-dynamicly-android. – CoolMind

0

se ancora non hai risolto il problema rimuovendo la tinta, si potrebbe desiderare di spostare il file di risorse per drawable (utilizzare Poject View), invece di drawable-anydpi come ho fatto io