Android 侧边栏(使用Support Library 4提供的扩展组件)
本文转自:http://www.apkbus.com/android-117148-1-1.html
写在前面的话:
接触Android已经有一段时间了,自己积累的东西也算蛮多的。总结以往的经验,凡是关键性的问题,一般都是要查阅API来解决的。所以,笔者建议同学们认真阅读API和Guider,Android的开发API文档是最容易阅读的(至少笔者是这么认为的,也接触一些windows phone的开发基础)。
今天,笔者为大家介绍Android侧边栏的使用。我也接触了一些侧边栏的第三方牛人写的插件,确实也是不错的。笔者介绍的是在Android扩展的包中的组件DrawerLayout,是一个很好的侧边栏,支持手势打开。好了,下面简单介绍使用组件的方法。
包括的内容有:
1、手势打开侧边栏(手要从接近左边向右滑,这点不是很好用)
2、使用fragment的按钮来打开侧边栏
3、使用menu键来打开侧边栏。
首先,来看看布局文件:
- <android.support.v4.widget.DrawerLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/main_layout"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent" >
- <!-- 页面内容 -->
- <FrameLayout
- android:id="@+id/main_content"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent" >
- </FrameLayout>
- <!-- 侧边栏的选项 -->
- <ListView
- android:id="@+id/left_drawer"
- android:layout_width="150dp"
- android:layout_height="fill_parent"
- android:layout_gravity="start"
- android:background="@android:color/background_dark" />
- </android.support.v4.widget.DrawerLayout>
再来看看Activiy中的内容:
- public class MainActivity extends FragmentActivity {
- public DrawerLayout drawerLayout;// 侧边栏布局
- public ListView leftList;// 侧边栏内的选项
- public ArrayAdapter<String> arrayAdapter;
- private String[] items;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- initViews();
- }
- // 初始化控件
- private void initViews() {
- drawerLayout = (DrawerLayout) findViewById(R.id.main_layout);
- items = getResources().getStringArray(R.array.left_array);
- leftList = (ListView) findViewById(R.id.left_drawer);
- arrayAdapter = new ArrayAdapter<String>(this, R.layout.list_item, items);
- leftList.setAdapter(arrayAdapter);
- leftList.setOnItemClickListener(itemListener);
- initFragments();
- }
- // 添加碎片
- private void initFragments() {
- FragmentManager manager = getSupportFragmentManager();
- FragmentTransaction transaction = manager.beginTransaction();
- DrawerFragment fragment = new DrawerFragment();
- // 设置在fragment中按钮来控制侧边栏的打开
- fragment.setDrawerLayout(drawerLayout, leftList);
- transaction.add(R.id.main_content, fragment);
- transaction.commit();
- }
- // 选项点击事件
- OnItemClickListener itemListener = new OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> arg0, View view, int position, long arg3) {
- // 设置Activity的标题,这里只是用来做一个测试,你可以在这里用来处理单击侧边栏的选项事件
- setTitle(items[position]);
- // 关闭侧边栏
- drawerLayout.closeDrawer(leftList);
- Log.i("onItemSelected",
- "open?:" + drawerLayout.isDrawerOpen(leftList));
- }
- };
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- // TODO Auto-generated method stub
- // 使用menu键打开或关闭侧边栏
- if (keyCode == KeyEvent.KEYCODE_MENU) {
- if (drawerLayout.isDrawerOpen(leftList)) {
- drawerLayout.closeDrawer(leftList);
- } else {
- drawerLayout.openDrawer(leftList);
- }
- }
- return super.onKeyDown(keyCode, event);
- }
- }
还有内容填充的片段代码:
- public class DrawerFragment extends Fragment implements OnClickListener {
- public DrawerLayout layout;
- public View view;
- public DrawerFragment() {
- super();
- // TODO Auto-generated constructor stub
- }
- public void setDrawerLayout(DrawerLayout layout, View view) {
- this.layout = layout;
- this.view = view;
- }
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- View rootView = inflater.inflate(R.layout.fragment_layout, container,
- false);
- Button openBtn = (Button) rootView.findViewById(R.id.open);
- openBtn.setOnClickListener(this);
- return rootView;
- }
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- if (v.getId() == R.id.open) {
- // 打开侧边栏
- if (!layout.isDrawerOpen(view)) {
- layout.openDrawer(view);
- }
- }
- }
- }
具体的使用效果图如下:
源码:http://pan.baidu.com/s/1mrdCx
Android 侧边栏(使用Support Library 4提供的扩展组件)的更多相关文章
- Android应用Design Support Library完全使用实例
阅读目录 2-1 综述 2-2 TextInputLayout控件 2-3 FloatingActionButton控件 2-4 Snackbar控件 2-5 TabLayout控件 2-6 Navi ...
- 安卓高级3 Android应用Design Support Library完全使用实例
原作者:http://www.open-open.com/lib/view/open1433385856119.html 1 背景 上周一年一度的Google IO全球开发者大会刚刚结束,Google ...
- Android material design support library -- CollapsingToolbarLayout简介
本文是codetrick上material design support library教程的第三篇,主要讲的是CollapsingToolbarLayout的概念和应用方法. 原文链接:Materi ...
- Android Studio:Support Library依赖包的版本号
当我们用RecyclerView时,如果想用某一个特定的版本,怎样才能知道版本号呢?如果自己的笔记本中用过这个库,那么会保存在本地硬盘中. Android自身依赖包的版本号本地存放路径: 没有用过该 ...
- Android Meterial Design Support Library
extends:http://inthecheesefactory.com/blog/android-design-support-library-codelab At the moment I be ...
- 【转】【翻】Android Design Support Library 的 代码实验——几行代码,让你的 APP 变得花俏
转自:http://mrfufufu.github.io/android/2015/07/01/Codelab_Android_Design_Support_Library.html [翻]Andro ...
- Android Design Support Library 的 代码实验——几行代码,让你的 APP 变得花俏
原文:Codelab for Android Design Support Library used in I/O Rewind Bangkok session--Make your app fanc ...
- Android Design Support Library: 学习CoordinatorLayout
简述 CoordinatorLayout字面意思是"协调器布局",它是Design Support Library中提供的一个超级帧布局,帮助我们实现Material Design ...
- Material Design 开发利器:Android Design Support Library 介绍
转自:https://blog.leancloud.cn/3306/ Android 5.0 Lollipop 是迄今为止最重大的一次发布,很大程度上是因为 material design —— 这是 ...
随机推荐
- ios paper for facebook 使用第三方库
facebook paper使用的第三方库 Facebook Paper使用的第三方库 第三方库名 简介 链接 ACE code editor https://github.com/ajaxorg/a ...
- android中相关的图形类
Bitmap - 称作位图,一般位图的文件格式后缀为bmp,当然编码器也有很多如RGB565.RGB888.作为一种逐像素的显示对象执行效率高,但是缺点也很明显存储效率低.我们理解为一种存储对象比较好 ...
- System V 信号量
1 概述 计数信号量集semid_ds: struct semid_ds { struct ipc_perm sem_perm; struct sem *sem_base; //指向信号量结构数组 u ...
- Android从服务端获取json解析显示在客户端上面
Android从服务端获取json解析显示在客户端上面 百度经验:jingyan.baidu.com 首先说一下Json数据的最基本的特点,Json数据是一系列的键值对的集合,和XML数据来比,Jso ...
- mysql 查找包含特定名字的表
SELECT distinct TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME LIKE '%medias%'
- vi简单快键命令
进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后 ...
- css盒子模型、文档流、相对与绝对定位、浮动与清除模型
一.CSS中的盒子模型 标准模式和混杂模式(IE).在标准模式下浏览器按照规范呈现页面:在混杂模式下,页面以一种比较宽松的向后兼容的方式显示.混杂模式通常模拟老式浏览器的行为以防止老站点无法工作. h ...
- centos 基本操作(输入法安装,adls宽带连接,查找文件,模拟终端)
centos 基本操作之输入法安装输入法启动终端,切换到超级管理员yum install "@Chinese Support"安装成功后,退出System->Preferen ...
- [C#]async/Await 使用小计
如果指定使用 异步 或 异步 修饰符,方法是异步方法,可以实现以下两个函数. • 清单异步方法可以使用 Await 或指定的 等待 悬挂点. 等待运算符通知编译器异步方法不能继续点的过去,直到等待 ...
- svg学习笔记(二)
SMIL animation演示代码集锦 <svg width="1400" height="1600" xmlns="http://www.w ...