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 侧滑菜单之 DrawerLayout 的使用)