Android5.0DrawerLayout学习

来源:互联网 发布:淘宝手机助手ipad版 编辑:程序博客网 时间:2024/05/29 00:31

android.support.v4.widget.DrawerLayout,抽屉功能,可以实现左侧滑动菜单效果


* 布局文件

<?xml version="1.0" encoding="utf-8"?>        <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"            xmlns:app="http://schemas.android.com/apk/res-auto"            xmlns:tools="http://schemas.android.com/tools"            android:id="@+id/drawer_layout"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:fitsSystemWindows="true"            tools:openDrawer="start">            <!--这里是嵌入ToolBar布局文件,包含了内容显示布局文件-->            <include                layout="@layout/app_bar_main"                android:layout_width="match_parent"                android:layout_height="match_parent" />            <!-- 左侧滑动菜单 -->            <android.support.design.widget.NavigationView                android:id="@+id/nav_view"                android:layout_width="wrap_content"                android:layout_height="match_parent"                <!--控制抽屉弹出方向,可选值为left,right,startend -->                android:layout_gravity="start"                android:fitsSystemWindows="true"                <!-- 抽屉头部的显示布局  -->                app:headerLayout="@layout/nav_header_main"                <!-- 抽屉下部的显示布局  -->                app:menu="@menu/activity_main_drawer" />        </android.support.v4.widget.DrawerLayout>
  • nav_header_main布局文件内容
<?xml version="1.0" encoding="utf-8"?>        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"            xmlns:app="http://schemas.android.com/apk/res-auto"            android:layout_width="match_parent"            android:layout_height="@dimen/nav_header_height"            android:background="@drawable/side_nav_bar"            android:gravity="bottom"            android:orientation="vertical"            android:paddingBottom="@dimen/activity_vertical_margin"            android:paddingLeft="@dimen/activity_horizontal_margin"            android:paddingRight="@dimen/activity_horizontal_margin"            android:paddingTop="@dimen/activity_vertical_margin"            android:theme="@style/ThemeOverlay.AppCompat.Dark">            <ImageView                android:id="@+id/imageView"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:paddingTop="@dimen/nav_header_vertical_spacing"                app:srcCompat="@android:drawable/sym_def_app_icon" />            <TextView                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:paddingTop="@dimen/nav_header_vertical_spacing"                android:text="Android Studio"                android:textAppearance="@style/TextAppearance.AppCompat.Body1" />            <TextView                android:id="@+id/textView"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:text="android.studio@android.com" />        </LinearLayout>
  • activity_main_drawer布局文件内容
<?xml version="1.0" encoding="utf-8"?>        <menu xmlns:android="http://schemas.android.com/apk/res/android">            <group android:checkableBehavior="single">                <item                    android:id="@+id/nav_camera"                    android:icon="@drawable/ic_menu_camera"                    android:title="Import" />                <item                    android:id="@+id/nav_gallery"                    android:icon="@drawable/ic_menu_gallery"                    android:title="Gallery" />                <item                    android:id="@+id/nav_slideshow"                    android:icon="@drawable/ic_menu_slideshow"                    android:title="Slideshow" />                <item                    android:id="@+id/nav_manage"                    android:icon="@drawable/ic_menu_manage"                    android:title="Tools" />            </group>            <item android:title="Communicate">                <menu>                    <item                        android:id="@+id/nav_share"                        android:icon="@drawable/ic_menu_share"                        android:title="Share" />                    <item                        android:id="@+id/nav_send"                        android:icon="@drawable/ic_menu_send"                        android:title="Send" />                </menu>            </item>        </menu>
  • 初始化抽屉控件代码
private void initDrawerLayout() {        drawer1 = (DrawerLayout) findViewById(R.id.drawer_layout);        //开关:关联DrawerLayout和Toolbar,需要配合使用        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(                this,                drawer1,                toolbar,                //这两个参数可以不指定                R.string.navigation_drawer_open,                R.string.navigation_drawer_close);        //drawer.setDrawerListener(toggle);   已经过时        drawer1.addDrawerListener(toggle);        // 同步DrawerLayout和Toolbar的状态        toggle.syncState();      }
  • 初始化侧面菜单
private void initNavigationView() {            NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);            navigationView.setNavigationItemSelectedListener(                    new NavigationView.OnNavigationItemSelectedListener() {                @Override // 点击菜单项,回调此方法                public boolean onNavigationItemSelected(MenuItem item) {                    int id = item.getItemId();                    if (id == R.id.nav_gallery) {                        Toast.makeText(MainActivity.this, "gallery", Toast.LENGTH_SHORT).show();                    }                    // 关闭侧滑菜单                    drawer.closeDrawer(GravityCompat.START);                    return true;                }            });        }
0 0
原创粉丝点击