Android 抽屉布局

  目前部分APP使用一种类似抽屉式的布局,像QQ那种,感觉很炫,自己也一直想做一个像那样的布局,(ps网上很多这样的例子,我下面做的就是参考网上的改变的)

  废话不就不说了,直接上代码

  1、首先建立一个布局文件activity_drawer.xml 

 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:paddingBottom="@dimen/activity_vertical_margin"
 6     android:paddingLeft="@dimen/activity_horizontal_margin"
 7     android:paddingRight="@dimen/activity_horizontal_margin"
 8     android:paddingTop="@dimen/activity_vertical_margin"
 9     tools:context=".DrawerActivity">
10     <android.support.v4.widget.DrawerLayout<!--重点在这里-->
11         android:id="@+id/drawer_layout"
12         android:layout_width="match_parent"
13         android:layout_height="match_parent">
14             <FrameLayout
15                 android:id="@+id/content_frame"
16                 android:layout_width="match_parent"
17                 android:layout_height="match_parent">
18                 <Button
19                     android:id="@+id/btn"
20                     android:layout_width="wrap_content"
21                     android:layout_height="wrap_content"
22                     android:text="打开"
23                     android:layout_alignParentTop="true"
24                     android:layout_alignParentLeft="true"
25                     android:layout_alignParentStart="true"
26                     android:layout_alignParentRight="true"
27                     android:layout_alignParentEnd="true" />
28             </FrameLayout>
29             <ListView
30                 android:id="@+id/left_drawer"
31                 android:layout_width="200dp"
32                 android:layout_height="match_parent"
33                 android:layout_gravity="start"
34                 android:background="#ff349710"
35                 android:choiceMode="singleChoice"
36                 android:dividerHeight="0dp"
37                 android:layout_marginTop="30dp"
38                />
39     </android.support.v4.widget.DrawerLayout>
40 </RelativeLayout>

  2.对应的Activity文件DrawerActivity.java

 1 public class DrawerActivity extends Activity {
 2     public static final String[] str = new String[]{"东部", "西部", "南部", "北部", "中部",
 3             "东南部", "西北部", "西南部", "东北部", "中西部", "中南部", "中北部"};
 4     private DrawerLayout mDrawerLayout = null;
 5     private ListView mlistView;
 6     @Override
 7     protected void onCreate(Bundle savedInstanceState) {
 8         super.onCreate(savedInstanceState);
 9         setContentView(R.layout.activity_drawer);
10 
11         mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
12         mlistView = (ListView) findViewById(R.id.left_drawer);
13 
14         
15         //下面两种方式都可以,后者要多建立一个value的array文件
16         mlistView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,str));
17         //mlistView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,getResources().getStringArray(R.array.planets_array)));
18         Button button = (Button) findViewById(R.id.btn);
19         button.setOnClickListener(new View.OnClickListener() {
20 
21             @Override
22             public void onClick(View v) {
23                 // 按钮按下,将抽屉打开
24                 mDrawerLayout.openDrawer(Gravity.LEFT);
25                 //mDrawerLayout.closeDrawers();//可以不监听,默认点击其他地方即可关闭
26                 //adapter.notifyDataSetChanged();
27             }
28         });
29         //列表控件监听
30         mlistView.setOnItemClickListener(new DrawerItemClickListener());
31     }
32 
33     private class DrawerItemClickListener implements ListView.OnItemClickListener {
34         @Override
35         public void onItemClick(AdapterView parent, View view, int position, long id) {
36             selectItem(position);
37         }
38     }
39     //简单输出一些信息
40     private void selectItem(int position) {
41         new AlertDialog.Builder(this)
42                 .setTitle("打开")
43                 .setMessage("打开的位置是:"+position+"\n位置的值是:"+str[position])
44                 .setPositiveButton("确定", new DialogInterface.OnClickListener() {
45                     @Override
46                     public void onClick(DialogInterface dialogInterface, int i) {
47                     //监听事件
48                     }
49                 }).show();
50     }
51 }

  3.简单效果如下:

 

  这仅仅是实现了效果,关于为什么待我研究透彻了再分享。

转载于:https://www.cnblogs.com/hais/p/4710212.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/256911.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习笔记(35):Python网络编程并发编程-协程(yield,greenlet,gevent模块)

立即学习:https://edu.csdn.net/course/play/24458/296457?utm_sourceblogtoedu 协程&#xff08;yield,greenlet,gevent&#xff09; 1.协程&#xff1a;在单线程中通过不断地在多个任务之间进行切换执行&#xff0c;来达到并发的效果的线程&#xff0c;可以提高效率 2.yiel…

双目标定算法

坐标系基础知识&#xff1a; > 1.1. 从像素坐标系(u,v) 到 世界坐标系(Xw,Yw,Yw) 这里直接拿上篇博文的结果&#xff0c;中间省去了其它坐标系直接的关系&#xff0c;直接给出&#xff0c;如下所示&#xff1a; 公式如下&#xff1a; > 1.2. 符号规定( Notation ) 为了…

Spring bean三种创建方式

spring共提供了三种实例化bean的方式&#xff1a;构造器实例化(全类名&#xff0c;反射)、工厂方法&#xff08;静态工厂实例化 动态工厂实例化&#xff09;和FactoryBean &#xff0c;下面一一详解&#xff1a; 1、构造器实例化 City.java 1 package com.proc.bean;2 3 publ…

Excel使用控件创建动态地图图表

[本文软件Excel 2010] 效果图&#xff1a; 首先我们看一下数据源 数据源中第二列是对应图形的名称。首先创建图形&#xff0c;我们可能在网络中找到各个地图的矢量图形。不过不是每个地图图形都适合我们&#xff0c;或许企业划分非按照行政区划分。因此可以尝试自己绘制&#x…

Windows 10 常用的快捷键及常用指令

系统快捷键 快捷键功能说明备注CtrlShiftEsc打开任务管理器macbook: fnshiftF11普通键盘: PrintScreen截屏幕图macbook: fnshiftoptionF11普通键盘: altPrintScreen截取当前窗口图片macbook: WinfnEsc普通键盘: WinPause/Break打开系统属性WinctrlD新建虚拟桌面Windows 10Winct…

学习笔记(35续):Python网络编程并发编程-基于gevent及线程池实现的并发套接字通讯

1.基于线程池实现并发套接字通讯&#xff1a;因为套接字涉及地是I/O密集模型&#xff0c;因此使用多线程会有高效率 服务器 #基于线程池完成并发的套接字通讯 from socket import * from threading import Thread from concurrent.futures import ThreadPoolExecutordef commun…

使用Configuration Manager部署及管理软件更新(2)

承接上一篇文章&#xff1a;http://ericxuting.blog.51cto.com/8995534/1543835 一、 确定软件更新符合性 1. 打开Configuration Manager管理控制台&#xff0c;点击软件库&#xff0c;展开软件更新&#xff0c;点击所有软件更新 2. 点击主页中的运行摘要&#xff0c;等待对话框…

NULL、nil、Nil、NSNull的区别

标志值含义NULL&#xff08;void *&#xff09;0C指针的字面零值nil&#xff08;id&#xff09;0Objecve-C对象的字面零值Nil&#xff08;Class&#xff09;0Objecve-C类的字面零值NSNull[NSNull null]用来表示零值的单独的对象转载于:https://www.cnblogs.com/wlsxmhz/p/56250…

Fiddler 域名过滤

原来一直没意识到Fiddler过滤&#xff0c;导致每次抓包都要自己判断、搜索好多东西&#xff0c;真是呵呵&#xff01; 过滤设置很简单&#xff0c;看懂一张图就解决问题了。 箭头 那两处设置下&#xff0c;圆圈处保存再进行抓包即可 转载于:https://www.cnblogs.com/eejron/p/4…

windows中VS卸载opencv配置,重新安装其他版本

1、找到工程的属性管理器&#xff0c;电机Debug64和Release64下面的 包含目录和库目录&#xff0c;删掉其原由配置的oepncv路径&#xff1b; 找到链接器中的附加依赖项&#xff0c;删掉原有的配置&#xff1b;

学习笔记(36):Python网络编程并发编程-IO模型介绍

立即学习:https://edu.csdn.net/course/play/24458/296460?utm_sourceblogtoedu I/O模型介绍&#xff1a;I/O模型表示处于等待状态的模型&#xff0c;如套接字通讯的accept和recv函数一样 1.同步I/O 2.异步I/O 3.阻塞I/O 4.非阻塞I/O

AD9 如何画4层pcb板

新建的PCB文件默认的是2层板&#xff0c;教你怎么设置4层甚至更多层板。在工具栏点击Design-->Layer Stack Manager.进入之后显示的是两层板&#xff0c;添加为4层板&#xff0c;一般是先点top layer, 再点Add Layer,再点Add Layer&#xff0c;这样就成了4层板。见下图。 有…

gulp 流处理

包含的内容&#xff1a; 穿插流流合并流队列流筛选1. 穿插流// passthrough stream 把流传递给其他的// usegulp.src(glob,{passthrough:true})// function 进行流的合并处理&#xff0c;避免多余配置以及冗余代码 2. 合并流// 使用merge2// install yarn add merge2 or …

windows上使用cmake 编译yaml-cpp源码,生成yam-cpp.lib

1、打开cmake-gui 2、添加CmakeList 3、建立build 4、进入工程中生成debug和release版本的lib

BZOJ 3039: 玉蟾宫( 悬线法 )

最大子矩阵...悬线法..时间复杂度O(nm)悬线法就是记录一个H向上延伸的最大长度(悬线), L, R向左向右延伸的最大长度, 然后通过递推来得到. ------------------------------------------------------------------#include<bits/stdc.h>using namespace std;#define ok(c) …

学习笔记(37):Python实战编程-yield实现生成器

立即学习:https://edu.csdn.net/course/play/19711/255579?utm_sourceblogtoedu1.yield return generator yield是一个返回的是一个生成器对象&#xff0c;是通过next函数一次一次地进行函数地迭代来获取结果的&#xff0c;而return函数则是将结果返回后&#xff0c;不再与…

ie6、7 下input的边框问题 ?

input的border设置为none,ie8及以上border都兼容&#xff0c;ie6和7的border还继续存在&#xff0c;将border设为0时所有浏览器上都不存在了&#xff0c;但是border为0时还是会继续的渲染。 将input的border设为"0 none",ie7及以上都正常了&#xff0c;但是ie6上inpu…

Mocha BSM产品亮点——关联事件分析

业务需求与挑战企业经常会遇到下列场景&#xff1a;• 企业某应用&#xff0c;例如&#xff0c;WebSphere Portal Server&#xff0c;已经不可用&#xff0c;是由于应用自身已不可用&#xff1f;还是应用所连接的数据库出了问题&#xff1f;还是应用的LDAP服务不可用&#xff1…

轻量级文本编辑器,Notepad最佳替代品:Notepad++

目录 正文之前1. 目的2. 原帖3. 为何推荐Notepad3.1. Notepad的一些基本特点3.2. notepad&#xff0c;notepad2&#xff0c;notepad&#xff0c;ultraEdit比较4. 使用Notepad前要了解的知识4.1. Notepad的名称和缩写4.2. Notepad修改设置后&#xff0c;立即生效4.3. Notepad的版…

学习笔记(38):Python实战编程-窗体显示

立即学习:https://edu.csdn.net/course/play/19711/343100?utm_sourceblogtoedu GUI&#xff1a;图形用户接口——GUI组件&#xff0c;组件定义&#xff0c;组件布局管理 主体窗口的设置&#xff1a; import tkinter#导入创建窗体的相关模块class Mainwindow():#创建窗口类de…