DrawerLayout侧滑菜单、Toolbar和沉浸式状态栏的使用

简介: DrawerLayout侧滑菜单、Toolbar和沉浸式状态栏的使用

最近在开发中需要用到侧滑菜单,以前使用的SlidingMenu,但似乎已经被Google淘汰了(过时了),于是乎使用了DrawerLayout来实现,既然是在项目使用的,那么Toolbar和沉浸式状态栏也是要配合使用的,这里做一下记录。


 我们先来看一看效果,这里是用模拟器实现的,效果不太好,真机上没问题。

aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTcwMTE2MTUyMDMyMzI5.gif



一、沉浸式状态栏其实挺简单的,网上也很多,为了兼容低版本的手机可以先通过判断版本再来设置,还有一些写好的工具类,一句话就可以实现了,这里使用的是style.xml来设置主题实现的。

    < style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        < !-- Customize your theme here. -->
        < item name="colorPrimary">@color/colorPrimary< /item>
        < item name="colorPrimaryDark">@color/colorPrimaryDark< /item>
        < item name="colorAccent">@color/colorAccent< /item>
        < !--全应用都只允许竖屏-->
        < item name="android:screenOrientation">portrait< /item>
    < /style>


然后是colors.xml

 

    < !--主题颜色-->
    < color name="colorPrimary">#FF8A00< /color>
    < color name="colorPrimaryDark">#FF8A00< /color>
    < color name="colorAccent">#FF8A00< /color>
    然后给应用设置上主题就可以了。



二、Toolbar

在xml中写上布局文件

    < LinearLayout
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:orientation="vertical">
    < android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/colorPrimary"
        android:minHeight="?attr/actionBarSize">
    < /android.support.v7.widget.Toolbar>
  < /LinearLayout>

然后在代码中获取控件即可。



三、DrawerLayout

也是在xml写上布局,这里贴出完整布局:

< ?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"
                                        android:id="@+id/menu_dl"
                                        android:layout_width="match_parent"
                                        android:layout_height="match_parent">
  < LinearLayout
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:orientation="vertical">
    < android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/colorPrimary"
        android:minHeight="?attr/actionBarSize">
    < /android.support.v7.widget.Toolbar>
  < /LinearLayout>
  < android.support.design.widget.NavigationView
      android:id="@+id/menu_nv"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:layout_gravity="start"
      app:headerLayout="@layout/layout_navigation"
      app:menu="@menu/menu_user_center_navigation">
  < /android.support.design.widget.NavigationView>
< /android.support.v4.widget.DrawerLayout>


下面给出DrawerLayout的主要监听事件:

/*
         *为抽屉菜单设置Item点击监听事件
         */
    mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
      @Override
      public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()){
          //个人编辑
          case R.id.nav_user_center_item:
            // 改变item选中状态
            item.setChecked(true);
            Toast.makeText(MainActivity.this,"个人编辑",Toast.LENGTH_LONG).show();
            break;
          //密码修改
          case R.id.nav_change_pwd_item:
            // 改变item选中状态
            item.setChecked(true);
            Toast.makeText(MainActivity.this,"密码修改",Toast.LENGTH_LONG).show();
            break;
          //版本更新
          case R.id.nav_version_update_item:
            // 改变item选中状态
            item.setChecked(true);
            Toast.makeText(MainActivity.this,"版本更新",Toast.LENGTH_LONG).show();
            break;
          //关于
          case R.id.nav_about_item:
            // 改变item选中状态
            item.setChecked(true);
            Toast.makeText(MainActivity.this,"关于",Toast.LENGTH_LONG).show();
            break;
          //退出登录
          case R.id.nav_quit_item:
            // 改变item选中状态
            item.setChecked(true);
            Toast.makeText(MainActivity.this,"退出登录",Toast.LENGTH_LONG).show();
            break;
        }
        //关闭抽屉菜单
        mDrawerLayout.closeDrawers();
        return false;
      }
    });
下面给出完整的demo下载地址:
http://download.csdn.net/detail/u014727709/9738851
转载自 :http://blog.csdn.net/u014727709/article/details/54574541
欢迎start,欢迎评论,欢迎指正
相关文章
|
4月前
|
XML Java API
Android翻转动画(卡片翻转效果)
本文介绍了如何实现卡片翻转动画效果,通过Android中的ObjectAnimator结合不同插值器(LinearInterpolator、AccelerateInterpolator、DecelerateInterpolator)完成平滑过渡。示例中以按钮点击触发动画,核心逻辑包括判断视图可见性、设置旋转角度及处理初始Bug(如第一次点击异常)。最终提供完整代码(Java与XML布局),并指出将按钮事件替换为屏幕监听即可满足右滑触发需求。适合初学者学习动画实现原理。
150 0
|
Android开发
Android中Glide加载Https图片失败的解决方案
Android中Glide加载Https图片失败的解决方案
747 1
|
7月前
|
存储 关系型数据库 数据库
华为数据库openGauss与PostgreSQL使用对比
华为openGauss数据库基于PostgreSQL内核演进,进行了多项增强。密码认证从MD5升级为SHA256;字符串存储中,char(n)、varchar(n)的n由字符改为字节,新增nvarchar2(n)表示字符,最大存储100MB;且将空字符&#39;&#39;统一转换为null,提升了数据处理的一致性和安全性。
574 12
|
Android开发
Android studio 出现Plugin [id: ‘com.android.application‘, version: ‘8.1.0‘, apply: false] 问题解决办法
Android studio 出现Plugin [id: ‘com.android.application‘, version: ‘8.1.0‘, apply: false] 问题解决办法
5328 2
|
Android开发
NestedScrollView,ScrollView中嵌套listView 或者RecyclerView会自动跳到顶部,中部,底部的问题。
NestedScrollView,ScrollView中嵌套listView 或者RecyclerView会自动跳到顶部,中部,底部的问题。
343 0
|
Android开发
Android自带的DrawerLayout和ActionBarDrawerToggle实现侧滑效果
Android自带的DrawerLayout和ActionBarDrawerToggle实现侧滑效果
TabLayout app:tabMode和app: tabGravity配合使用效果对比
TabLayout app:tabMode和app: tabGravity配合使用效果对比
【错误记录】Groovy 函数参数动态类型报错 ( Caught: groovy.lang.MissingMethodException: No signature of method )
【错误记录】Groovy 函数参数动态类型报错 ( Caught: groovy.lang.MissingMethodException: No signature of method )
3340 0
【错误记录】Groovy 函数参数动态类型报错 ( Caught: groovy.lang.MissingMethodException: No signature of method )
|
Web App开发 编解码 人工智能
Stable diffusion 二维码生成器
Stable diffusion 二维码生成器
763 0
|
XML 前端开发 Android开发
关于安卓毛玻璃实现(三)recyclerview静态毛玻璃
关于安卓毛玻璃实现(三)recyclerview静态毛玻璃
395 0