Android DrawerLayout实现侧拉菜单功能

发布时间 - 2026-01-11 01:48:05    点击率:

效果图

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  xmlns:tools="http://schemas.android.com/tools" 
  xmlns:app="http://schemas.android.com/apk/res-auto" 
  android:layout_width="match_parent" 
  android:layout_height="match_parent" 
  tools:context="com.example.lenovo.mydrawerlayout.MainActivity"> 
<android.support.v4.widget.DrawerLayout 
  android:layout_width="match_parent" 
  android:id="@+id/drawer_layout" 
  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="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      app:popupTheme="@style/AppTheme.PopupOverlay" /> 
    <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="这是主界面" 
      /> 
  </LinearLayout> 
  <LinearLayout 
    android:layout_width="300dp" 
    android:layout_height="match_parent" 
    android:layout_gravity="left" 
    android:background="#f00" 
    > 
    <TextView 
      android:id="@+id/t" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="这是侧拉界面" 
      /> 
  </LinearLayout> 
</android.support.v4.widget.DrawerLayout> 
</LinearLayout> 

注:DrawerLayout下有两个布局,DrawerLayout的第一个子元素是主要内容,即抽屉没有打开时显示的布局,DrawerLayout的第二个子元素是抽屉中的内容,即抽屉布局,layout_gravity为侧拉方向

因为用到Toolbar所以要把ActionBar替换了所以设置

values下设置styles.xml    为NoActionBar

<resources> 
   <!-- Base application theme. --> 
  <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> 
  </style> 
  <style name="AppTheme.NoActionBar"> 
    <item name="windowActionBar">false</item> 
    <item name="windowNoTitle">true</item> 
  </style> 
  <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" /> 
  <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" /> 
</resources> 

MainActivity

package com.example.lenovo.mydrawerlayout; 
 import android.os.Bundle; 
import android.support.design.widget.Snackbar; 
import android.support.v4.view.GravityCompat; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.ActionBarDrawerToggle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.View; 
import android.widget.TextView; 
public class MainActivity extends AppCompatActivity { 
  @Override 
  protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    //Toolbar代替ActionBar 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    // DrawerLayout 
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    //Toolbar上面最左边显示三杠图标监听DrawerLayout 
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( 
        this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
    drawer.setDrawerListener(toggle); 
    toggle.syncState(); 
    //侧拉页面字体 
    TextView t= (TextView) findViewById(R.id.t); 
    t.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
        Snackbar.make(v, "侧拉页面", Snackbar.LENGTH_LONG) 
            .setAction("Action", null).show(); 
      } 
    }); 
  } 
  @Override 
  public void onBackPressed() { 
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    if (drawer.isDrawerOpen(GravityCompat.START)) { 
      drawer.closeDrawer(GravityCompat.START); 
    } else { 
      super.onBackPressed(); 
    } 
  } 
} 


# Android  # DrawerLayout实现侧拉菜单功能  # Android实现右边抽屉Drawerlayout效果  # Android侧滑菜单之DrawerLayout用法详解  # Android使用DrawerLayout实现仿QQ双向侧滑菜单  # Android App中DrawerLayout抽屉效果的菜单编写实例  # Android侧滑菜单控件DrawerLayout使用详解  # Android中DrawerLayout+ViewPager滑动冲突的解决方法  # Android原生侧滑控件DrawerLayout使用方法详解  # Android组件之DrawerLayout实现抽屉菜单  # Android中DrawerLayout实现侧滑菜单效果  # Android抽屉布局DrawerLayout的简单使用  # 这是  # 要把  # 主要内容  # 有两个  # vertical  # orientation  # drawer_layout  # attr  # toolbar 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  文字头像制作网站推荐软件,醒图能自动配文字吗?  JavaScript如何实现音频处理_Web Audio API如何工作?  如何在IIS7上新建站点并设置安全权限?  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  Laravel如何处理和验证JSON类型的数据库字段  通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】  Python3.6正式版新特性预览  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  html5如何实现懒加载图片_ intersectionobserver api用法【教程】  WEB开发之注册页面验证码倒计时代码的实现  如何在云指建站中生成FTP站点?  如何在宝塔面板中创建新站点?  制作旅游网站html,怎样注册旅游网站?  利用 Google AI 进行 YouTube 视频 SEO 描述优化  如何选择PHP开源工具快速搭建网站?  javascript基于原型链的继承及call和apply函数用法分析  C++时间戳转换成日期时间的步骤和示例代码  iOS中将个别页面强制横屏其他页面竖屏  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】  Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  Laravel如何与Inertia.js和Vue/React构建现代单页应用  Laravel API资源类怎么用_Laravel API Resource数据转换  Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】  Windows10如何更改计算机工作组_Win10系统属性修改Workgroup  网站制作价目表怎么做,珍爱网婚介费用多少?  简历没回改:利用AI润色让你的文字更专业  Laravel如何升级到最新版本?(升级指南和步骤)  奇安信“盘古石”团队突破 iOS 26.1 提权  如何用花生壳三步快速搭建专属网站?  Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何在Windows 2008云服务器安全搭建网站?  实现点击下箭头变上箭头来回切换的两种方法【推荐】  标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析  桂林网站制作公司有哪些,桂林马拉松怎么报名?  Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践  高端建站如何打造兼具美学与转化的品牌官网?  Laravel如何实现API版本控制_Laravel API版本化路由设计策略  如何在Tomcat中配置并部署网站项目?  Python文本处理实践_日志清洗解析【指导】  如何用y主机助手快速搭建网站?  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析  如何用IIS7快速搭建并优化网站站点?  laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析