2014-04-21 10 views
10

Jak zaimplementować szufladę do nawigacji w systemie Android?W jaki sposób zaimplementować rozwijaną szufladę nawigacji dla Androida z podelementami?

TopLevelView1 ~ TopLevelView4 może wybrać i nie ma dzieci
TopVevelView5 może collaspe

Moje pytanie jest to, że jeśli mój strukturze Grupy takie jak ta, na przykład

Wszystko
patrzył
Kategoria
---- mp3
---- txt
---- doc
---- pdf

po wybraniu wszystkich, a następnie pokaże cały plik.

po wybraniu opcji Wgraj, a następnie pokaż tylko plik z widocznością.

po wybraniu pliku mp3, pokaże się tylko pliki mp3.

, a kategoria może się rozwijać i zwijać.

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

+1

Wygląda jak 'ExpandableListView'. Poza tym zaimplementujesz go dokładnie tak samo, jak w zwykłym 'ListView'. Obraz pochodzi ze strony programisty Androida. Dlaczego nie postępujesz zgodnie z tutorialem? [Tutaj jest] (https://developer.android.com/training/implementing-navigation/nav-drawer.html) –

+0

Prawdopodobnie chcesz użyć ExpandableListView ... oto przykład: http: //www.androidhive .info/2013/07/android-expandable-list-view-tutorial/ –

+1

Przepraszamy za nieopisanie mojego pytania. Zaktualizowałem moje pytanie. – Sagi

Odpowiedz

3

Dla nawigacji:

  • Alternatywa 1:

    przesuwne Menu, które na pewno tam z. Nawet używane przez popularne aplikacje takie jak LinkedIn i Foursquare i łatwe do wdrożenia i użytkowania. Pełne wyjaśnienie i kody źródłowe przykładów: SlidingMenu - GitHub

  • Alternatywa 2:

    Android Nawigacja szuflady. Jeśli chcesz w pełni dostosować wszystko samodzielnie, bez korzystania z żadnych bibliotek, to jest twoja opcja. można sprawdzić kody i jak to zrobić ze strony Android Developers: Creating a Navigation Drawer

Widok wewnątrz szufladzie nawigacji menu/przesuwnych:

  • Alternatywa 1:

    Android domyślnie ExpandableListView. Linki: Android Developers, androidhive

  • Alternatywa 2:

    AnimatedExpandableListView, który jest realizowany od ExpandableListView, ale gdy element zostanie kliknięty, Expand odbywa się z gładkiej animacji, która może wolisz używać dla lepiej wyglądać.AnimatedExpandableListView

1

Spróbuj coś takiego

<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> 

kodu 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; 
      } 
     }); 
Powiązane problemy