Android开发实现抽屉菜单
作者:开心星人 发布时间:2022-09-01 11:47:09
标签:Android,抽屉菜单
本文实例为大家分享了Android开发实现抽屉菜单的具体代码,供大家参考,具体内容如下
实现效果
点击菜单图表即可进入抽屉
代码实现
1、打开app/build.gradle文件,在dependencies闭包中添加如下内容:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:24.2.1'
testCompile 'junit:junit:4.12'
compile 'com.android.support:design:24.2.1'
compile 'de.hdodenhof:circleimageview:2.1.0'
}
2、进入想要添加抽屉的界面的layout布局
添加DrawerLayout控件
首先DrawerLayout是一个布局,在布局中允许放入两个直接子控件,第一个子控件是主屏幕中的内容,第二个空间是滑动菜单中显示的内容
原本的界面所有布局内容就放在第一个子控件中
<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/bk_1"
tools:context="com.luckyxmobile.graphserviceping.MainActivity">
<!-- 内容区 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:id="@+id/setting"
android:layout_width="56dp"
android:layout_height="56dp"
android:layout_marginLeft="8dp"
android:background="@drawable/ic_baseline_menu1"
/>
<!-- android:background="@drawable/ic_baseline_menu_24"-->
<!--原图标宽高 40 52-->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="180dp"
android:id="@+id/graphServicePing"
android:gravity="center"
android:text="Graph Service Ping"
android:textColor="#26C6DA"
android:textSize="36dp"/>
<LinearLayout
android:layout_marginTop="32dp"
android:layout_gravity="center_horizontal"
android:background="@drawable/bloder"
android:layout_width="match_parent"
android:layout_height="80dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:paddingHorizontal="4dp">
<!-- android:paddingHorizontal="16dp"-->
<!-- android:layout_height="wrap_content"-->
<Button
android:minHeight="50dp"
android:id="@+id/btn_input"
android:layout_width="0dp"
android:layout_weight="8"
android:layout_height="wrap_content"
android:textSize="20dp"
android:layout_marginLeft="8dp"
android:background="@null"
/>
<Button
android:id="@+id/btn_ping"
android:background="@null"
android:layout_weight="4"
android:text="Ping!"
android:textColor="#262626"
android:textSize="25sp"
android:layout_width="0dp"
android:layout_height="80dp"
/>
<!-- android:layout_weight="2"-->
<!-- android:layout_width="50dp"-->
<!-- android:layout_height="50dp"-->
</LinearLayout>
</LinearLayout>
<com.google.android.material.navigation.NavigationView
android:id="@+id/nav_view"
android:background="@mipmap/bk_1"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:layout_gravity="start"
app:menu="@menu/nav_menu">
</com.google.android.material.navigation.NavigationView>
</androidx.drawerlayout.widget.DrawerLayout>
android:layout_gravity="start"这一句很重要,一定要加上
3.NavigationView用来优化滑动菜单页面的
menu用来在NavigationView中显示具体的菜单项,headerLayout则用来在NavigationView中显示头布局(这里我只用到了menu,所以我只写menu)
在res下如果没有menu目录,可以新建一个menu文件夹,然后右键menu->new_menu resource file
menu代码:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/nav_setting"
android:icon="@drawable/ic_launcher_setting_foreground"
android:title="设置">
</item>
</menu>
可以添加多个item,不要忘了引用menu
app:menu="@menu/nav_menu"
4.设置主界面菜单图表的点击事件
跟intent不同
setting.setOnClickListener(new View.OnClickListener() { //设置点击事件
@Override
public void onClick(View v) {
mDrawerLayout.openDrawer(GravityCompat.START);
}
});
5、设置抽屉菜单item点击事件
DrawerLayout mDrawerLayout;
mDrawerLayout=findViewById(R.id.drawerLayout);
NavigationView navView=(NavigationView)findViewById(R.id.nav_view);
navView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener(){
@Override
public boolean onNavigationItemSelected(MenuItem item) {
switch(item.getItemId()){
case R.id.nav_setting:
startActivity(new Intent(MainActivity.this, Setting.class));
break;
}
mDrawerLayout.closeDrawers();
return false;
}
});
来源:https://blog.csdn.net/qq_55675216/article/details/121310849


猜你喜欢
- 一、 添加 maven 依赖<dependency> <groupId>com.google.guava
- class ftp{ private string host = null; &n
- /* * 使用 C# 动态编译代码和执行 * 作者: yaob */ static void Main(string[] args) { /
- 创建自定义启动器0、项目总览1、创建项目,引入依赖创建项目 spring-boot-jdbc-starter,引入依赖,pom文件如下:&l
- WPF换肤的设计原理,利用资源字典为每种皮肤资源添加不同的样式,在后台切换皮肤资源文件。截图上图中,第一张图采用规则样式,第二张图采用不规则
- 效果视频简述本Demo采用Hilt+Retrofit+Paging3完成,主要为了演示paging3分页功能的使用,下列为Demo所需要的相
- 目录猜测可能原因问题排查问题原因总结class Main { public static void main(St
- ArrayBlockingQueue介绍ArrayBlockingQueue是数组实现的线程安全的有界的阻塞队列。线程安全是指,ArrayB
- 在做商城的项目中,有这么个需求,就是一个产品下有两个价格,一个是市场价,一个是销售价,这时要把市场价添加个删除线;刚开始遇到这个时,在网上找
- 利用学过的BitmapShader渲染类,我们来实现一个带描边的圆角图片。具体实现:用来显示自定义的绘图类的布局文件res/layout/m
- 标题栏中的返回按钮在实际使用中用的比较多,今天就来讲讲我在项目开发中的使用经历,话不多说,还是直接上源码,上源码是最给力的。一、 编写自定义
- Eclipse提供了一个可扩展插件的开发系统。这就使得Eclipse在运行系统之上可以实现各种功能。这些插件也不同于其他的应用(插件的功能是
- Spring Security和Shiro的区别相同点1、认证功能2、授权功能3、加密功能4、会话管理5、缓存支持6、rememberMe功
- 前言ConcurrentHashMap是Java 5中支持高并发、高吞吐量的线程安全HashMap实现。我们知道,ConcurrentHas
- C语言用结构体实现一个通讯录,通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址提供方法:1. 添加联系人
- 鉴于谷歌最新推出的Android Studio备受开发者的推崇,所以也跟着体验一下。一、介绍Android Studio Andr
- 本文实例讲述了WinForm通过操作注册表实现限制软件使用次数的方法。分享给大家供大家参考,具体如下:1.创建注册表文件:打开记事本,输入一
- 实例如下:using System;using System.Linq.Expressions;class DynamicPredicate
- 图像滤波在opencv中可以有多种实现形式自定义滤波如使用3×3的掩模:对图像进行处理.使用函数filter2D()实现#include&l
- 一、函数和变量的多文件问题.h: 头文件,一般包含函数声明,变量声明,宏定义,头文件等内容(header).c : 源文件,一般包含函数实现