效果图

Layout

注意事项

想要实现侧边栏,需要配合使用DrawerLayout。因为会用到嵌套布局,所以根布局不能是 ConstraintLayout,最好使用 LinearLayout 布局。

DrawerLayout 布局下再嵌套两个布局,一个放置内容如 LinearLayout,一个放置侧划菜单,这里使用 NavigationView

为了出现侧边栏点击图标和菜单图标,需要自定义一个 ToolBar,放置在内容 Layout 里

重点

侧划菜单 NavigationView 一定要设置 android:layout_gravity="start"

实例
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ebook.EbookActivity"> <androidx.drawerlayout.widget.DrawerLayout
android:id="@+id/drawer_ebook"
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"> <androidx.appcompat.widget.Toolbar
android:id="@+id/main_menu_ebook"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:navigationIcon="@mipmap/menu_more" />
<TextView
android:id="@+id/bookContent"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout> <com.google.android.material.navigation.NavigationView
android:id="@+id/navigation_ebook"
android:layout_width="230dp"
android:layout_height="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/navigation_ebook_header"
app:menu="@menu/menu_drawer_ebook"/>
</androidx.drawerlayout.widget.DrawerLayout>
</LinearLayout>

上面不能加注释,有一点想特别说明一下,因为搞了好久,就是那个menu的三横图标怎么弄出来,开始一直在navigation上找,行不能,最后看到说toolbar本身可以设定,尝试一下确实ok



自已找的喜欢的图标

app:navigationIcon="@mipmap/menu_more"

Activity

绑定侧划监听事件

private lateinit var mBinding: ActivityEbookBinding
private lateinit var mDrawerToggle: ActionBarDrawerToggle override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mBinding = ActivityEbookBinding.inflate(layoutInflater)
setContentView(mBinding.root)
setSupportActionBar(mBinding.mainMenuEbook)
initialData()
} private fun initialData(){
//初使化侧边栏监听事件
mDrawerToggle = ActionBarDrawerToggle(this, mBinding.drawerEbook, mBinding.mainMenuEbook, R.string.openDrawerContentDesc, R.string.closeDrawerContentDesc)
mDrawerToggle.syncState()
//绑定侧边栏监听事件
mBinding.drawerEbook.addDrawerListener(mDrawerToggle) //侧边栏菜单图标颜色恢复正常,而非默认的灰色
mBinding.navigationEbook.itemIconTintList = null
//绑定侧边栏菜单点击事件
mBinding.navigationEbook.setNavigationItemSelectedListener { item: MenuItem ->
when(item.itemId){
R.id.menu_drawer_ebook_setting -> showSnackBar(mBinding.navigationEbook,"menu_drawer_setting")
R.id.menu_drawer_ebook_close -> finish()
}
true
}
}

Android App 侧边栏菜单的简单实现的更多相关文章

  1. android中menu菜单的简单使用

    我认为menu用起来简洁方便,特别是在一些大一点的程序中我们早就厌烦了一遍遍的加button,设置了菜单可谓是事半功倍,简单省事. <1>先声明定义下你的menu: private sta ...

  2. Android APP 简单高效的禁用横竖屏切换

    默认情况下,Android APP的界面会随着手机方向的改变而改变,当手机处于竖屏状态,APP的界面也处于竖屏状态,而当手机处于横屏状态,APP也会自动切换到横屏状态.一般情况下APP的界面都是为竖屏 ...

  3. Android App Widget的简单使用

    App Widget是一些桌面的小插件,比如说天气和某些音乐播放应用,放到桌面去的那部分: 例如: 实现步骤及代码如下: (1)首先,在AndroidManifest.xml中声明一个App Widg ...

  4. Android Activity的生命周期简单总结

    Android Activity的生命周期简单总结 这里的内容参考官方的文档,这篇文章的目的不是去总结Activity是如何启动,如何创造,以及暂停和销毁的,而是从实际开发中分析在Activity各个 ...

  5. Android APP压力测试(一)之Monkey工具介绍

    Android APP压力测试(一) 之Monkey工具介绍 前言 本文主要介绍Monkey工具.Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕.滑动. ...

  6. 个人开发者做一款Android App需要知道的事情

    个人开发者做一款Android App需要知道的事情 在大学时, 自己是学计算机专业的,而且还和老师一起做过一年半的项目. 有时候是不是有这样的想法,做一个自己的网站.但一直未付诸行动.2012年时, ...

  7. android中常用菜单(menu)的基本知识

    (一)选项菜单 1.简单的创建菜单: @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMe ...

  8. Android App集成支付宝

    原地址:http://blog.csdn.net/wenbingoon/article/details/7933078 手机的在线支付,被认为是2012年最看好的功能,我个人认为这也是移动互联网较传统 ...

  9. Android调用天气预报的WebService简单例子

    下面例子改自网上例子:http://express.ruanko.com/ruanko-express_34/technologyexchange5.html 不过网上这个例子有些没有说明,有些情况不 ...

随机推荐

  1. Hive 常见面试题(一)

    面试题: hive 内部表和外部表的区别? hive 是如何实现分区的? Hive 有哪些方式保存元数据,各有哪些优缺点? hive中order by.distribute by.sort by和cl ...

  2. python练习 英文字符的鲁棒输入+数字的鲁棒输入

    鲁棒 = Robust 健壮 英文字符的鲁棒输入 描述 获得用户的任何可能输入,将其中的英文字符进行打印输出,程序不出现错误.‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪ ...

  3. 【Android】安卓开发之activity如何传值到fragment,activity与fragment传值

    作者:程序员小冰,GitHub主页:https://github.com/QQ986945193 新浪微博:http://weibo.com/mcxiaobing 大家知道,我们利用activity使 ...

  4. 序列号,IMEI,IMSI,ICCID的含义

    什么是序列号? 序列号是一串标识你手机出生证明以及身材特征的信息,甚至还可用来识别是否为官方翻新机.你可以简单的将这一串数字分割为:aabccdddeef 的形式.拿iPhone 4为例 aa = 工 ...

  5. laya资源版本管理

    layaair-cmd https://ldc.layabox.com/doc/?nav=zh-as-3-4-2 Laya的版本管理 https://blog.csdn.net/qq_43287088 ...

  6. 常用注解@Intdef与@Stringdef

    1.优点 可以代替枚举,静态常量,可以让注解只在代码中存在,编译后就删除,可以省内存. 2.@IntDef 2.1 官网 https://developer.android.com/reference ...

  7. Photon Server伺服务器在LoadBalancing的基础上扩展登陆服务

    一,如何创建一个Photon Server服务 参见此博客 快速了解和使用Photon Server 二, 让LoadBalancing与自己的服务一起启动 原Photonserver.config文 ...

  8. android Studio(3.2.1) NDK配置

    1.创建as工程 2. 创建class类 3. 生成头文件 3.1 配置命令工具 添加工具: 配置工具: Program: $JDKPath$\bin\javah.exe Arugments:-d j ...

  9. springboot x.x.x RELEASE不同版本的差异

    springboot 1.x.x RELEASE的 application.properties配置 server.context-path=/ server.port=8080 server.ses ...

  10. 三年前买的T440p目前淘宝二手价2300左右

    当时可是近六千买的,唉... 有消息说六千多电脑和四千多的区别是多了OEM Windows的价钱,如果一重装,等于把差价抹了... 看来买电脑,买车,买手机都该秉承一个够用就好的原则,不然当时的顶配不 ...