Android 侧滑菜单之 DrawerLayout 的使用

        DrawerLayout是谷歌官方提供的,用于实现侧滑菜单的一种抽屉式布局。

        本文主要介绍DrawerLayout的简单使用。

        详细代码:github.com/Baolvlv/LearnAndroid/tree/master/DrawerLayoutUsing

1.基本介绍

DrawerLayout,谷歌官方提供,实现侧滑菜单,抽屉布局

2.创建抽屉布局

将根布局改为DrawerLayout,设置命名空间,id与宽高

xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/drawer_layout"

android:layout_height="match_parent"

android:layout_width=“match_parent">

设置抽屉隐藏时的主内容布局,FrameLayout(运行时由fragment填充)

android:id="@+id/content_frame"

android:layout_width="match_parent"

android:layout_height="match_parent">

设置左侧抽屉式导航栏,ListView

设置id与宽高

android:id="@+id/left_drawer"

android:layout_width="240dp"

android:layout_height=“match_parent"

设置layout_gravity为start,即从左向右滑出,如果为end,即为从右向左滑出

android:layout_gravity="start"

设置背景为米白色:

android:background=“#ffffcc"

设置为单选

android:choiceMode=“singleChoice"

通过设置分割线颜色透明,宽度为0,使分割线不可见

android:divider="@android:color/transparent"

android:dividerHeight=“0dp">

注意事项:

1.主内容视图是DrawerLayout的第一个子视图

2.主内容视图的宽度和高度匹配父视图

3.设置layout_gravity属性为start,不推荐使用left

4.抽屉视图宽度以dp为单位,不超过320dp

2.初始化抽屉式导航列表

初始化DrawerLayout和ListView,通过ArrayList储存list中的条目,通过Adapter传给ListView

mDrawerLayout= (DrawerLayout) findViewById(R.id.drawer_layout);

mDrawList= (ListView) findViewById(R.id.left_drawer);

menuLists=newArrayList<>();

for(inti =0;i<5;i++){

menuLists.add("baolvlv"+i);

}

adapter=newArrayAdapter(this,

android.R.layout.simple_list_item_1,menuLists);

mDrawList.setAdapter(adapter);

新建contentFragment,继承自fragment,作为填充frameLayout的fragment,同时创建布局资源文件,重写onCreateView方法

publicViewonCreateView(LayoutInflater inflater,@NullableViewGroup container,@NullableBundle savedInstanceState) {

View view = inflater.inflate(R.layout.fragment_content,container,false);

textView= (TextView) view.findViewById(R.id.text);

//获得参数,设置为textView的text的值

String text = getArguments().getString("text");

textView.setText(text);

returnview;

}

为侧边栏抽屉设置事件监听器,主Activity实现onItemClickListener

mDrawList.setOnItemClickListener(this);

重写onItemClick方法,执行点选后的操作

@Override

public voidonItemClick(AdapterView parent,View view, intposition, longid) {

//动态插入一个fragment到FrameLayout当中

Fragment contentFragment =newContentFragment();

//将点选的item作为参数,通过Bundle传递给fragment

Bundle args =newBundle();

args.putString("text",menuLists.get(position));

contentFragment.setArguments(args);

//替换当前fragment为新的fragment

FragmentManager fm = getSupportFragmentManager();

fm.beginTransaction().replace(R.id.content_frame,contentFragment).commit();

//点选之后关闭左侧的抽屉

mDrawerLayout.closeDrawer(mDrawList);

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,076评论 25 708
  • 一:打开Android Studio中项目app目录下的buile.gradle,检查是否有v7包,如果没有,添加...
    萱生活阅读 746评论 0 0
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,510评论 0 17
  • 01.我想和你做知己 大二那年,阿狸跟着爸妈跑去海南过春节。作为一北方大妞,没怎么见过大海的她对这场旅行格外的...
    嘚瑟乔阅读 1,079评论 1 2
  • 科学宫校区 ✔班级: 【星期六1-2pm。学员:陈学睿,黄献瑞,王靖越,于世龙,李千禾。教师:郭彤宇】 ✔教学目标...
    lego_april阅读 538评论 0 0