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

来源:互联网 发布:mac qq怎么上传群文件 编辑:程序博客网 时间:2024/05/30 19:33

本例,是基于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。

效果图:


下面是具体代码:

layout/activity_drawer_layout_demo.xml

<?xml version="1.0" encoding="utf-8"?><android.support.v4.widget.DrawerLayout 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">    <LinearLayout        android:layout_width="match_parent"        android:layout_height="match_parent"        android:orientation="vertical">        <android.support.v7.widget.Toolbar            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.support.v7.widget.Toolbar>        <!--内容区-->    </LinearLayout>    <android.support.design.widget.NavigationView        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">    </android.support.design.widget.NavigationView></android.support.v4.widget.DrawerLayout>

layout/activity_drawer_layout_demo_header.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout 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">    <ImageView        android:id="@+id/headerImageView"        android:layout_width="60dp"        android:layout_height="60dp"        android:src="@mipmap/ic_launcher_round" />    <TextView        android:id="@+id/userNameText"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginTop="10dp"        android:text="linzhiyong" /></LinearLayout>

menu/main_navigation_menu.xml

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

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);


阅读全文
1 0
原创粉丝点击