Androidこのようなナビゲーションドロワーを実装する方法は?
TopLevelView1〜TopLevelView4は選択でき、子はありません
TopVevelView5は崩壊する可能性があります
私の質問は、たとえば私のグループ構造がこのような場合
すべて
凝視
カテゴリー
---- mp3
- - txt
----ドキュメント
---- pdf
すべてを選択すると、すべてのファイルが表示されます。
スター付きを選択すると、スター付きファイルのみが表示されます。
mp3を選択すると、mp3ファイルのみが表示されます。
カテゴリは展開したり折りたたんだりできます。
ナビゲーションの場合:
代替1:
スライディングメニュー、私は間違いなく一緒に行きます。 LinkedInやFoursquareなどの人気のあるアプリケーションでも使用され、実装と使用が簡単です。完全な説明とソースコードの例: SlidingMenu --GitHub
代替2:
Androidナビゲーションドロワー。ライブラリを使用せずにすべてを自分で完全にカスタマイズしたい場合は、これがオプションです。コードとその方法は、Android開発者向けWebサイト: ナビゲーションドロワーの作成 から確認できます。
ナビゲーションドロワー/スライドメニュー内の表示:
代替1:
AndroidのデフォルトのExpandableListView。リンク: Android開発者 、 androidhive
代替2:
ExpandableListViewから実装されたAnimatedExpandableListViewですが、アイテムがクリックされると、見栄えを良くするために使用したいスムーズなアニメーションで展開が行われます。 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;
}
});