web-dev-qa-db-ja.com

Expandable Androidナビゲーションドロワーとサブアイテムを実装するにはどうすればよいですか?

Androidこのようなナビゲーションドロワーを実装する方法は?

TopLevelView1〜TopLevelView4は選択でき、子はありません
TopVevelView5は崩壊する可能性があります

私の質問は、たとえば私のグループ構造がこのような場合

すべて
凝視
カテゴリー
---- mp3
- - txt
----ドキュメント
---- pdf

すべてを選択すると、すべてのファイルが表示されます。

スター付きを選択すると、スター付きファイルのみが表示されます。

mp3を選択すると、mp3ファイルのみが表示されます。

カテゴリは展開したり折りたたんだりできます。

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

10
Sagi

ナビゲーションの場合:

  • 代替1:

    スライディングメニュー、私は間違いなく一緒に行きます。 LinkedInやFoursquareなどの人気のあるアプリケーションでも使用され、実装と使用が簡単です。完全な説明とソースコードの例: SlidingMenu --GitHub

  • 代替2:

    Androidナビゲーションドロワー。ライブラリを使用せずにすべてを自分で完全にカスタマイズしたい場合は、これがオプションです。コードとその方法は、Android開発者向けWebサイト: ナビゲーションドロワーの作成 から確認できます。

ナビゲーションドロワー/スライドメニュー内の表示:

  • 代替1:

    AndroidのデフォルトのExpandableListView。リンク: Android開発者androidhive

  • 代替2:

    ExpandableListViewから実装されたAnimatedExpandableListViewですが、アイテムがクリックされると、見栄えを良くするために使用したいスムーズなアニメーションで展開が行われます。 AnimatedExpandableListView

3
canova

そのようなことを試してください

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