2013-11-24 4 views
8

Sono stato frustrato per questo problema da un po 'di tempo, ma non riesco a sembrare che un elemento nel pannello di navigazione appaia come selezionato né programmaticamente né quando l'utente lo seleziona.Come faccio a far apparire un elemento specifico nel cassetto di navigazione come selezionato?

io sto cercando di realizzare (ancora non riesco a pubblicare immagini) i seguenti http://i.stack.imgur.com/PIHEm.png

Ho seguito il cassetto esempio di navigazione a http://developer.android.com/training/implementing-navigation/nav-drawer.html e ogni volta che posso passare frammenti, chiamo setItemChecked() sul cassetto di navigazione ListView

mDrawerListView.setItemChecked(position, true);, ma non sembra selezionare la voce nella posizione in listview.

mio file di layout è anche quasi esattamente come Google esempio

<android.support.v4.widget.DrawerLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <FrameLayout 
     android:id="@+id/content_frame" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <ListView 
     android:id="@+id/left_drawer" 
     android:layout_width="160dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:choiceMode="singleChoice" 
     android:divider="@android:color/transparent" 
     android:dividerHeight="0dp" 
     android:background="#e5e5e5" /> 

</android.support.v4.widget.DrawerLayout> 

Ogni aiuto è apprezzato notevolmente, e grazie in anticipo.

MODIFICA: questo è il codice di inizializzazione per il cassetto di navigazione. Come puoi vedere, non sto usando un ListView o un adattatore personalizzato.

private void setUpDrawer() { 
     mDrawerListViewItems = getResources().getStringArray(R.array.drawer_list_item_names); 
     mDrawerListView = (ListView) findViewById(R.id.left_drawer); 
     mDrawerListView.setAdapter(new ArrayAdapter<String>(this, 
       R.layout.drawer_list_item, mDrawerListViewItems)); 

     mDrawerListView.setOnItemClickListener(new ListView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       selectCounterFragment(position); 
      } 
     }); 

     mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
     mDrawerToggle = new ActionBarDrawerToggle(
       this,     /* host Activity */ 
       mDrawerLayout,   /* DrawerLayout object */ 
       R.drawable.ic_drawer, /* nav drawer icon to replace 'Up' caret */ 
       R.string.drawer_open, /* "open drawer" description */ 
       R.string.drawer_close /* "close drawer" description */ 
       ); 

     // Set actionBarDrawerToggle as the DrawerListener 
     mDrawerLayout.setDrawerListener(mDrawerToggle); 

     // styling option add shadow the right edge of the drawer 
     mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); 
    } 

Grazie a tutti, per le risposte finora.

+0

si fa a utilizzare una listview personalizzato ?. È possibile utilizzare un seelctor – Raghunandan

+0

No, sto usando il ListView integrato con un ArrayAdapter. C'è la possibilità che non appaia selezionata perché sto usando Theme.AppCompat.Light? – 0x0

+0

usa un selettore per 'drawer_list_item.xml' – Raghunandan

risposta

0

Qual è il layout per le voci dell'elenco? Esistono numerose trappole con lo stato "swallowing" dei layout degli elementi della lista, in quanto la listview non è selezionabile/selezionabile.

Consiglierei di dare un'occhiata agli articoli eccellenti di Cyril Mottier, guarda in particolare la sezione "Perché, diavolo, le mie immagini non sono più cliccabili?"

Buona fortuna,

CJ.

0

Questo

navigationView.getMenu().getItem(0).setChecked(true); 

selezionerà la prima voce del menu.

0

utilizzare android:checked = "true" nel file yournavigationlist.xml.

eample:

<group android:checkableBehavior="single"> 
<item 
     android:id="@+id/nav_main" 
     android:checked="true" 
     android:title="Home" 
     /> 
    <item 
     android:id="@+id/nav_gallery" 
     android:icon="@drawable/ic_menu_gallery" 
     android:title="Gallery" /> 

</group> 

elemento con id nav_main verrà selezionata per impostazione predefinita quando viene avviata l'applicazione.

0

Utilizzare navigationView.setCheckedItem(R.id.default) dopo aver impostato la navigazione.

0

Aggiungi

Android: checked = "true"

alla specifica voce di menu.

Se si vuole aprire frammento specifico

getSupportFragmentManager().beginTransaction().replace(R.id.frame, new YourFragment()).commit();