2014-04-21 5 views
10

Come implementare il cassetto di navigazione di Android come questo?Come implementare il cassetto di navigazione espandibile per Android con elementi secondari?

TopLevelView1 ~ TopLevelView4 può selezionare e senza figli
TopVevelView5 può collaspe

La mia domanda è che se la mia struttura del gruppo come questo per esempio

Tutti
Stared
Categoria
---- mp3
---- txt
---- doc
---- pdf

quando seleziono tutto quindi mostra tutti i file.

quando seleziono fisso, quindi mostra solo il file stellato.

quando seleziono mp3 quindi mostra solo file mp3.

e Categoria possono espandersi e comprimere.

https://developer.android.com/design/media/navigation_drawer_collapse.png

+1

si presenta come un 'ExpandableListView'. A parte il fatto che lo implementate esattamente come fareste con un normale 'ListView'. L'immagine proviene dalla pagina degli sviluppatori Android. Perché non segui il tutorial qui? [Eccolo qui] (https://developer.android.com/training/implementing-navigation/nav-drawer.html) –

+0

Probabilmente vuoi usare un ExpandableListView ... ecco un esempio: http: //www.androidhive .info/2013/07/android-expandable-list-view-tutorial/ –

+1

Ci scusiamo per non aver descritto chiaramente la mia domanda. Ho aggiornato la mia domanda. – Sagi

risposta

3

Per la navigazione:

  • Alternativa 1:

    scorrere menu, che avrei sicuramente andare con. Utilizzato anche da applicazioni popolari come LinkedIn e Foursquare e facile da implementare e utilizzare. Spiegazione ed esempio codici sorgente completo: SlidingMenu - GitHub

  • Alternativa 2:

    Android Navigazione cassetto. Se vuoi personalizzare completamente tutto da solo senza utilizzare alcuna libreria, questa è la tua opzione. È possibile controllare i codici e come farlo dal sito Android Developers: Creating a Navigation Drawer

View all'interno del vostro menu di cassetto di navigazione/scorrevole:

  • Alternativa 1:

    Android default ExpandableListView. Link: Android Developers, androidhive

  • Alternativa 2:

    AnimatedExpandableListView, che viene realizzato da ExpandableListView, ma quando un oggetto viene cliccato, il espandere è fatto con un'animazione fluida, che si può scegliere di utilizzare per un meglio guardareAnimatedExpandableListView

1

provare qualcosa di simile

<android.support.v4.widget.DrawerLayout 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <FrameLayout 
     android:id="@+id/drawer_list_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" > 

     <ExpandableListView 
      android:id="@+id/drawer_list" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_gravity="center"/> 
    </FrameLayout> 
</android.support.v4.widget.DrawerLayout> 

codice Java:

drawerListView.setAdapter(new ExpandableListAdapter() { 

      @Override 
      public void unregisterDataSetObserver(DataSetObserver observer) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void registerDataSetObserver(DataSetObserver observer) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onGroupExpanded(int groupPosition) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onGroupCollapsed(int groupPosition) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public boolean isEmpty() { 
       // TODO Auto-generated method stub 
       return false; 
      } 

      @Override 
      public boolean isChildSelectable(int groupPosition, int childPosition) { 
       // TODO Auto-generated method stub 
       return false; 
      } 

      @Override 
      public boolean hasStableIds() { 
       // TODO Auto-generated method stub 
       return true; 
      } 

      @Override 
      public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { 
       // TODO Auto-generated method stub 
       TextView view = new TextView(getApplicationContext()); 
       view.setText("group " + groupPosition); 
       return view; 
      } 

      @Override 
      public long getGroupId(int groupPosition) { 
       // TODO Auto-generated method stub 
       return groupPosition; 
      } 

      @Override 
      public int getGroupCount() { 
       // TODO Auto-generated method stub 
       return 5; 
      } 

      @Override 
      public Object getGroup(int groupPosition) { 
       // TODO Auto-generated method stub 
       return null; 
      } 

      @Override 
      public long getCombinedGroupId(long groupId) { 
       // TODO Auto-generated method stub 
       return 0; 
      } 

      @Override 
      public long getCombinedChildId(long groupId, long childId) { 
       // TODO Auto-generated method stub 
       return 0; 
      } 

      @Override 
      public int getChildrenCount(int groupPosition) { 
       // TODO Auto-generated method stub 
       return 5; 
      } 

      @Override 
      public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, 
        ViewGroup parent) { 
       TextView view = new TextView(getApplicationContext()); 
       view.setText("child " + groupPosition); 
       return view; 
      } 

      @Override 
      public long getChildId(int groupPosition, int childPosition) { 
       // TODO Auto-generated method stub 
       return childPosition ; 
      } 

      @Override 
      public Object getChild(int groupPosition, int childPosition) { 
       // TODO Auto-generated method stub 
       return null; 
      } 

      @Override 
      public boolean areAllItemsEnabled() { 
       // TODO Auto-generated method stub 
       return false; 
      } 
     });