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 —— 这是 ...
随机推荐
- Morgan Stanley telephone interview
Today is Monday, April 28. I get a telephone call from Morgan Stanley in Shanghai. My examiner is a ...
- vim plugin 原理
vim 个性化设置与功能扩展均通过 script 来实现,这种 script 又叫 plugin.plugin 是 vim 的核心与精髓. 最常用的配置文件 vimrc,也是一种 plugin.换句话 ...
- PDF.NET+EasyUI实现只更新修改的字段
PDF.NET 在我看来是目前最简单易用而且高效的orm框架之一,感谢作者深蓝医生 实现的功能是easyui的行内编辑,用到了爱看书不识字的datagrid仿extjs的行内编辑 都是牛人啊. 201 ...
- ajax GET和POST请求web api 的几种方式
GET请求 1.无参数get请求 一般get请求有两种写法,一种是 $.get() 一种是$.ajax({type:"get"}), 我个人比较喜欢用后者. 下面例子主要是ge ...
- css3实现垂直居中,水平
.box{ text-align:center; } .content{ margin-top:50%; transform:translateY(-50%);/**沿Y轴移动**/ } <di ...
- php文件上传大小限制设置
配置选项说明: upload_max_filesize 所上传的文件的最大大小. post_max_size 设定 POST 数据所允许的最大大小. memory_limit 设定了一个脚本所能够申请 ...
- SQLServer数据库 导出表和导入sql脚本
1.选择需要导出表的数据库--任务---生成脚本 2.显示:生成和发布脚本窗口--简介(某些可能关闭该页面的,可以省略该步骤),点击下一步 3.显示:生成和发布脚本窗口--选择对象--按照图片操作即可 ...
- List<>.Contains<>的用法
List<Plan> Plans = new List<Plan>();//存放服务器中的当前用户所接受的项目计划列表. //Plan 类包含PlanID等属性. if (Pl ...
- (转载)MVC + JQUERY + AJAX的几种方式
MVC + JQUERY + AJAX的几种方式 // 传过去一个简单值,获取一个简单值 $.ajax({ type: "GET", url: ...
- Mvc学习笔记(3)
控制器将处理后的数据"传"给视图的方式 public ActionResult Test() { List<Student> stuList = new List< ...