如何实现这样的android导航抽屉?
TopLevelView1~TopLevelView4可以选择并且没有子项 TopVevelView5可以collaspe
我的问题是,如果我的小组结构如此
所有
盯着
分类
---- MP3
---- TXT
---- DOC
---- PDF
当我选择all然后显示所有文件。
当我选择凝视然后只显示盯着文件。
当我选择mp3时,只显示mp3文件。
和类别可以扩展和崩溃。
答案 0 :(得分:3)
导航:
备选方案1:
滑动菜单,我一定会去的。甚至被LinkedIn和Foursquare等流行应用程序使用,易于实现和使用。完整说明和示例源代码:SlidingMenu - GitHub
备选方案2:
Android导航抽屉。如果您想在不使用任何库的情况下自己完全自定义所有内容,这是您的选择。您可以在Android开发者网站上查看代码及其操作方法:Creating a Navigation Drawer
在导航栏/滑动菜单中查看:
备选方案1:
Android默认的ExpandableListView。链接:Android Developers,androidhive
备选方案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;
}
});