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

时间:2014-04-21 10:41:12

标签: android expandablelistview navigation-drawer

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

TopLevelView1~TopLevelView4可以选择并且没有子项 TopVevelView5可以collaspe

我的问题是,如果我的小组结构如此

所有
盯着
分类
---- MP3
---- TXT
---- DOC
---- PDF

当我选择all然后显示所有文件。

当我选择凝视然后只显示盯着文件。

当我选择mp3时,只显示mp3文件。

和类别可以扩展和崩溃。

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

2 个答案:

答案 0 :(得分:3)

导航:

  • 备选方案1:

    滑动菜单,我一定会去的。甚至被LinkedIn和Foursquare等流行应用程序使用,易于实现和使用。完整说明和示例源代码:SlidingMenu - GitHub

  • 备选方案2:

    Android导航抽屉。如果您想在不使用任何库的情况下自己完全自定义所有内容,这是您的选择。您可以在Android开发者网站上查看代码及其操作方法:Creating a Navigation Drawer

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

  • 备选方案1:

    Android默认的ExpandableListView。链接:Android Developersandroidhive

  • 备选方案2:

    AnimatedExpandableListView,它是从ExpandableListView实现的,但是当单击一个项目时,展开会以平滑的动画完成,您可能更喜欢使用它来获得更好的外观。 AnimatedExpandableListView

答案 1 :(得分:1)

尝试类似的东西

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