编写公共toolbar+DrawerLayout 布局文件:

<?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="match_parent"xmlns:app="http://schemas.android.com/apk/res-auto"android:orientation="vertical"><androidx.appcompat.widget.Toolbarandroid:id="@+id/toolbar"android:layout_width="match_parent"android:layout_height="50dp"android:background="@color/colorBase"android:minHeight="?attr/actionBarSize"android:theme="?attr/actionBarTheme"></androidx.appcompat.widget.Toolbar><androidx.drawerlayout.widget.DrawerLayoutandroid:id="@+id/drawer"android:layout_width="220dp"android:layout_height="match_parent"android:layout_gravity="right"><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="match_parent"android:orientation="vertical"><ListViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:divider="@color/colorWhite"android:dividerHeight="3dp"android:id="@+id/slide_menu"/></LinearLayout></androidx.drawerlayout.widget.DrawerLayout>
</LinearLayout>

在activity 代码中添加:

override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.menu_realtime_data)initView()setSupportActionBar(toolbar)/*显示Home图标*/supportActionBar?.setDisplayHomeAsUpEnabled(true)toolbar.subtitle = "test"var toggle = ActionBarDrawerToggle(this, drawer, toolbar, 0, 0)toggle.syncState()drawer.addDrawerListener(toggle)drawer.setScrimColor(0x70bbbbbb)
... ...

默认使用系统toggle 监听,控制drawerlayout的弹出,回收。

如果居右边抽屉滑出:

<?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="match_parent"xmlns:app="http://schemas.android.com/apk/res-auto"android:orientation="vertical"><androidx.appcompat.widget.Toolbarandroid:id="@+id/toolbar"android:layout_width="match_parent"android:layout_height="50dp"android:background="@color/colorBase"android:minHeight="?attr/actionBarSize"android:theme="?attr/actionBarTheme"app:navigationIcon="@drawable/back"><ImageView android:id="@+id/menu_btn"android:contentDescription="返回"android:layout_marginTop="1dp"android:layout_width="35dp"android:layout_height="35dp"android:paddingRight="5dp"android:layout_gravity="right"android:src="@drawable/menu_slide"/></androidx.appcompat.widget.Toolbar><androidx.drawerlayout.widget.DrawerLayoutandroid:id="@+id/drawer"android:layout_width="220dp"android:layout_height="match_parent"android:layout_gravity="right"><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="match_parent"android:orientation="vertical"android:layout_gravity="right"><ListViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:divider="@color/colorWhite"android:dividerHeight="3dp"android:id="@+id/slide_menu"/></LinearLayout></androidx.drawerlayout.widget.DrawerLayout>
</LinearLayout>

那么就不能使用toggle,需要自己定义button监听和控制DrawerLayout

package com.daobo.wand.childmenuimport android.graphics.Color
import android.os.Bundle
import android.view.Gravity
import android.view.View
import android.widget.AdapterView
import android.widget.AdapterView.OnItemClickListener
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.daobo.wand.R
import androidx.appcompat.app.ActionBarDrawerToggle
import androidx.drawerlayout.widget.DrawerLayout
import com.daobo.wand.BR
import com.daobo.wand.adapter.ListAdapterimport kotlinx.android.synthetic.main.app_bar.*class AboutActivity : AppCompatActivity(), View.OnClickListener {val listMenuText = listOf<String>("关于", "下载升级")private var drawerOpenFlag : Boolean  = falseoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.menu_about)setSupportActionBar(toolbar)/*显示Home图标*/supportActionBar?.setDisplayHomeAsUpEnabled(true)toolbar.subtitle = "国家电网山东省供电公司"toolbar.setNavigationOnClickListener {finish()}drawer.setDrawerListener(object : DrawerLayout.DrawerListener {override fun onDrawerStateChanged(arg0: Int) {}override fun onDrawerSlide(arg0: View, arg1: Float) {}override fun onDrawerOpened(arg0: View) {drawerOpenFlag = true}override fun onDrawerClosed(arg0: View) {drawerOpenFlag= false}})drawer.setScrimColor(0x70bbbbbb)var adapter = ListAdapter<String>(this, listMenuText,R.layout.tab_item_simple, BR.name)slide_menu.adapter = adapterToast.makeText(this, "关于本app版本,以及升级!", Toast.LENGTH_SHORT).show()slide_menu.onItemClickListener =OnItemClickListener { parent, view, position, id ->if(position == 0){Toast.makeText(this, "关于菜单!", Toast.LENGTH_SHORT).show()}else{Toast.makeText(this, "下载升级!", Toast.LENGTH_SHORT).show()}}menu_btn.setOnClickListener(this)}override fun onClick(v: View?) {//TODO("not implemented")// To change body of created functions use File | Settings | File Templates.when(v?.id) {R.id.menu_btn ->{//点击了if(!drawerOpenFlag) {drawer.openDrawer(Gravity.RIGHT)} else{drawer.closeDrawer(Gravity.RIGHT)}}}}
}

注意别忘了在manifest文件中,将activity 设置如下   android:theme="@style/Theme.AppCompat.Light.NoActionBar"

<activity android:name=".MainActivity"android:theme="@style/Theme.AppCompat.Light.NoActionBar"android:screenOrientation="landscape"/>

不然使用setSupportActionBar(toolbar) 会异常!

toolbar + DrawerLayout 实现抽屉菜单相关推荐

  1. android 抽屉组件,Android组件之DrawerLayout实现抽屉菜单

    DrawerLayout组件同样是V4包中的组件,也是直接继承于ViewGroup类,所以这个类也是一个容器类. 抽屉菜单的摆放和布局通过android:layout_gravity属性来控制,可选值 ...

  2. android 2个界面抽屉,Android使用DrawerLayout创建左右两个抽屉菜单

    在Android support.v4 中有一个抽屉视图控件DrawerLayout.使用这个控件,可以生成通过在屏幕上水平滑动打开或者关闭菜单,能给用户一个不错的体验效果. 最近在项目中,设计中有用 ...

  3. [UI]抽屉菜单DrawerLayout分析(三)

    在[UI]抽屉菜单DrawerLayout分析(一)和[UI]抽屉菜单DrawerLayout分析(二)中分别介绍了DrawerLayout得基本框架结构和ViewDragerHelper的作用以及手 ...

  4. Android 使用Toolbar+DrawerLayout快速实现仿“知乎APP”侧滑导航效果

    在以前,做策划导航的时候,最常用的组件便是SlidingMenu了,当初第一次用它的时候觉得那个惊艳啊,体验可以说是非常棒. 后来,Android自己推出了一个可以实现策划导航的组件DrawerLay ...

  5. android开发学习——关于activity 和 fragment在toolbar上设置menu菜单

    在做一个项目,用的是Android Studio 系统的抽屉源码,但是随着页面的跳转,toolbar的title需要改变,toolbar上的menu菜单也需要改变,在网上找了好久,也尝试了很多,推荐给 ...

  6. Toolbar+DrawerLayout

    Toolbar + DrawerLayout Toolbar DrawerLayout 配置文件 布局 程序 配置文件 <?xml version="1.0" encodin ...

  7. 如何使用React Native构建嵌套的抽屉菜单

    by Dhruvdutt Jadhav 由Dhruvdutt Jadhav 如何使用React Native构建嵌套的抽屉菜单 (How to build a nested drawer menu w ...

  8. mysql抽屉图标_React Native自定义组件实现抽屉菜单控件效果

    一.需求分析 原生开发中,自定义View可谓是屡见不鲜的事情,往往系统的控件总不能满足现实的需求.五花八门的产品设计需要我们做出不同的View.关于自定义View的内容网上已经有很多的博文,本篇博客要 ...

  9. ##报错:DrawerLayout must be measured with MeasureSpec.EXACTLY. - 在使用ToolBar+DrawerLayout可能会报这个错误 - 1,

    ##报错:DrawerLayout must be measured with MeasureSpec.EXACTLY. - 在使用ToolBar+DrawerLayout可能会报这个错误 - 1,自 ...

最新文章

  1. 基于iscsi实现文件存储共享
  2. 什么是IaaS, PaaS和SaaS及其区别
  3. python3 生成器的send_Python:生成器中send()的行为
  4. SPOJ HIGH Highways ——Matrix-Tree定理 高斯消元
  5. python 单向链表
  6. 【模拟遍历】剑指offer:替换空格
  7. 机器学习编译入门课程学习笔记第一讲 机器学习编译概述
  8. 编译原理用C语言编写递归下降分析程序,编译原理递归下降分析器(C语言).pdf
  9. 二叉查找树,平衡二叉树
  10. 因子分析法之因子旋转
  11. Mybatis的一级缓存和二级缓存,看完不再懵逼
  12. 13-JS中的面向对象
  13. 坦克大战(Tank Battalion)------Java代码实现
  14. 项目管理中的进度控制与目标计划
  15. ESP8266模块睡眠模式
  16. Altium Designer——PCB中更改线宽的技巧总结
  17. Windows操作系统查看电脑开关机记录
  18. leetcode——【猫和老鼠】
  19. 计算机二级office题库有多少道,计算机二级MS Office题库(600道).docx
  20. 【BLE】nrf connect配置为服务端进行蓝牙主从通信实验

热门文章

  1. usb 1-5.2: device not accepting address 4, error -110问题解决方案
  2. nuSVC的使用和解读
  3. navicat设置数据表的外键
  4. 苹果7手机计算机怎么看历史记录,苹果手机safari书签及其历史记录怎么恢复
  5. mysql自动dump脚本_MySQL--简单mysqldump脚本
  6. 如何切换 SVN 用户名
  7. oracle备份与恢复--闪回技术
  8. Winform开发框架之通用短信邮件通知模块
  9. Linux下程序报出/bin/bash: No such file or directory
  10. iOS 苹果app提交 ITC.apps.validation.prerelease_build_missing