Android DrawerLayout实现抽屉效果实例代码

发布时间 - 2026-01-10 22:08:17    点击率:

 官网:https://developer.android.com/training/implementing-navigation/nav-drawer.html

贴上主要的逻辑和布局文件:

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  android:id="@+id/drawer_layout" 
  android:layout_width="match_parent" 
  android:layout_height="match_parent"> 
  <!-- content --> 
  <FrameLayout 
    android:id="@+id/drawer_container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"/> 
  <!-- Drawer--> 
  <ListView 
    android:id="@+id/drawer_menu" 
    android:layout_width="240dp" 
    android:layout_height="match_parent" 
    android:background="#FFF0F0F0" 
    android:layout_gravity="start"/> 
  <!--   
    android:choiceMode    选中状态 跟onItemClick没有冲突  
        none       值为0,表示无选择模式;   
        singleChoice   值为1,表示最多可以有一项被选中;  
        multipleChoice  值为2,表示可以多项被选中。  
    android:layout_gravity left或right left或start  right或end  
      表示在抽屉里的效果是从左到右还是从右到左出现  
  --> 
</android.support.v4.widget.DrawerLayout> 

这里需要注意一下:content主界面一定要定义在drawer的前面,另外,Android:layout_gravity="start"(从左往右)或者android:layout_gravity="end"(从右往左),这个属性是必须要定义的,不然出现下面的异常:

MainActivity.java

package com.jackie.drawerlayoutdemo; 
import android.os.Bundle; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.TextView; 
public class MainActivity extends AppCompatActivity { 
  private String mTitle; 
  private DrawerLayout mDrawerLayout; 
  private ListView mDrawerMenu; 
  @Override 
  protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    initView(); 
    initData(); 
    //默认打开抽屉 
    mDrawerLayout.openDrawer(mDrawerMenu); 
  } 
  private void initView() { 
    mTitle = getResources().getString(R.string.app_name); 
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
    mDrawerMenu = (ListView) findViewById(R.id.drawer_menu); 
  } 
  private void initData() { 
    //数组定义在xml 文件中 
    String[] items = getResources().getStringArray(R.array.left_drawer_items); 
    ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_expandable_list_item_1); 
    adapter.addAll(items); 
    mDrawerMenu.setAdapter(adapter); 
    mDrawerMenu.setSelection(0); 
    //设置点击item事件 
    mDrawerMenu.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
        mTitle = ((TextView) view).getText().toString(); 
        switchFragment(); 
        mDrawerLayout.closeDrawer(mDrawerMenu); 
        mDrawerMenu.setSelection(position); 
      } 
    }); 
  } 
  private void switchFragment() { 
    getSupportFragmentManager().beginTransaction().replace(R.id.drawer_container, new ItemFragment(mTitle)).commit(); 
    getSupportActionBar().setTitle(mTitle); 
  } 
} 

效果图如下:

以上所述是小编给大家介绍的Android DrawerLayout实现抽屉效果实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# android  # drawerlayout  # drawerlayout抽屉  # Android开发之DrawerLayout实现抽屉效果  # Android实现右边抽屉Drawerlayout效果  # 使用DrawerLayout组件实现侧滑抽屉的功能  # Android App中DrawerLayout抽屉效果的菜单编写实例  # Android组件之DrawerLayout实现抽屉菜单  # 利用DrawerLayout和触摸事件分发实现抽屉侧滑效果  # 值为  # 是从  # 小编  # 最多  # 在此  # 给大家  # 多项  # 贴上  # 所述  # 需要注意  # 给我留言  # 官网  # 感谢大家  # 抽屉里  # 往右  # 往左  # 疑问请  # 有任何  # 必须要  # background 


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


相关推荐: 软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  如何用AI帮你把自己的生活经历写成一个有趣的故事?  如何用花生壳三步快速搭建专属网站?  如何快速完成中国万网建站详细流程?  详解vue.js组件化开发实践  html如何与html链接_实现多个HTML页面互相链接【互相】  如何快速搭建虚拟主机网站?新手必看指南  通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】  公司门户网站制作流程,华为官网怎么做?  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  Laravel怎么调用外部API_Laravel Http Client客户端使用  教你用AI润色文章,让你的文字表达更专业  php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】  如何在宝塔面板创建新站点?  如何为不同团队 ID 动态生成多个非值班状态按钮  Laravel怎么发送邮件_Laravel Mail类SMTP配置教程  laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法  如何在Windows环境下新建FTP站点并设置权限?  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】  北京企业网站设计制作公司,北京铁路集团官方网站?  千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】  网站制作价目表怎么做,珍爱网婚介费用多少?  智能起名网站制作软件有哪些,制作logo的软件?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  如何快速查询网站的真实建站时间?  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工  潮流网站制作头像软件下载,适合母子的网名有哪些?  如何撰写建站申请书?关键要点有哪些?  Laravel distinct去重查询_Laravel Eloquent去重方法  Swift中swift中的switch 语句  夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  百度浏览器网页无法复制文字怎么办 百度浏览器复制修复  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】  Python正则表达式进阶教程_复杂匹配与分组替换解析  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  Laravel怎么为数据库表字段添加索引以优化查询  微信公众帐号开发教程之图文消息全攻略  文字头像制作网站推荐软件,醒图能自动配文字吗?  Laravel中的withCount方法怎么高效统计关联模型数量  HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】  如何将凡科建站内容保存为本地文件?  如何在不使用负向后查找的情况下匹配特定条件前的换行符  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?