如何实现可扩展的android子导航抽屉?

如何实现这样的android导航抽屉?

TopLevelView1〜TopLevelView4可以select没有孩子
TopVevelView5可以collaspe

我的问题是,如果我的团队结构是这样的例子

所有
盯着
类别
—- MP3
– – 文本
—- DOC
—- PDF

当我select所有,然后显示所有文件。

当我selectstared然后显示stared文件只。

当我selectMP3,然后只显示MP3文件。

和类别可以扩大和崩溃。

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

Solutions Collecting From Web of "如何实现可扩展的android子导航抽屉?"

导航:

  • 备选案文1:

    滑动菜单,我一定会去。 即使使用LinkedIn和Foursquare等stream行应用程序,也易于实施和使用。 完整的解释和例子源代码: SlidingMenu – GitHub

  • 备选案文2:

    Android导航抽屉。 如果你想完全自定义一切而不使用任何库,这是你的select。 您可以检查代码,以及如何从Android开发者网站: 创build导航抽屉

在导航抽屉/滑动菜单中查看:

  • 备选案文1:

    Android默认的ExpandableListView。 链接: Android开发者 , androidhive

  • 备选案文2:

    AnimatedExpandableListView,这是从ExpandableListView实现的,但是当一个项目被点击时,展开是用一个平滑的animation完成的,你可能更喜欢使用它来获得更好的外观。 AnimatedExpandableListView

尝试类似的东西

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

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; } });