Android学习之基于DrawerLayout的侧边栏实现

本例,是基于AndroidStudio开发,用到v7包下DrawerLayout,Toolbar,和android.support.design下的NavigationView,需要在gradle中配置

compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:design:25.3.1'

用到Toolbar,是想在侧边栏打开的时候覆盖Actionbar,如果不想覆盖Actionbar,可以使用普通布局代替Toolbar。

效果图:

Android学习之基于DrawerLayout的侧边栏实现_第1张图片

下面是具体代码:

layout/activity_drawer_layout_demo.xml

xml version="1.0" encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawerLayout"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

            android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

                    android:id="@+id/mToolBar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/colorPrimary"
            android:fitsSystemWindows="true"
            android:minHeight="?attr/actionBarSize"
            android:popupTheme="@style/Widget.AppCompat.ActionBar"
            app:theme="@style/Widget.AppCompat.Light.ActionBar">
        

        

    

            android:id="@+id/navigation_view"
        android:layout_width="250dp"
        android:layout_height="match_parent"
        android:layout_gravity="left"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/activity_drawer_layout_demo_header"
        app:menu="@menu/main_navigation_menu">
    

layout/activity_drawer_layout_demo_header.xml

xml version="1.0" encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="150dp"
    android:background="@color/whiteGray"
    android:gravity="center"
    android:orientation="vertical">

            android:id="@+id/headerImageView"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:src="@mipmap/ic_launcher_round" />

            android:id="@+id/userNameText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:text="linzhiyong" />

menu/main_navigation_menu.xml

xml version="1.0" encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android">
            android:id="@+id/favorite"
        android:icon="@mipmap/ic_launcher"
        android:title="收藏" />
            android:id="@+id/wallet"
        android:icon="@mipmap/ic_launcher"
        android:title="钱包" />
            android:id="@+id/photo"
        android:icon="@mipmap/ic_launcher"
        android:title="相册" />
            android:id="@+id/file"
        android:icon="@mipmap/ic_launcher"
        android:title="文件" />

activity

        mDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, mToolBar, 0, 0);
        // 添加此句,toolbar左上角显示开启侧边栏图标
         mDrawerToggle.syncState();
        drawerLayout.addDrawerListener(mDrawerToggle);
        navigationView.setItemIconTintList(null);
        navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                showToast(item.getItemId() + "--" + item.getTitle().toString());
                return true;
            }
        });

//        // 禁用手势
//        drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
//        // 打开
//        drawerLayout.openDrawer(Gravity.LEFT);
//        // 关闭
//        drawerLayout.closeDrawer(Gravity.LEFT);


你可能感兴趣的:(android)