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测试一段代码的运行时间
王刚韧 23:19:26测试一段代码的运行时间 测试一段代码运行花了多久: NSDate* tmpStartData = [NSDate date] ;<#代码#> double delt ...
- c# 串口发送接收数据
/********************** 串口数据接收事件 *****************************/ private void SerialPort_DataReceived ...
- ArcGis for WPF(1)
这篇文章主要是讲窗体中怎么加载一张在线地图. 第一步:首先引用ESRI.ArcGIS.Client.dll类库. 第二步:在XAML中添加如下代码: <Window x:Class=" ...
- 02_Jquery_01_id选择器
首先建立建立一个JavaWeb项目工程,导入jquery-1.5.1.js. (一)选择器--打印文本内容 [index.jsp] <%@ page language="java&qu ...
- jQuery插件综合应用(四)头像设置
一.操作流程 会员点击头像设置,弹出一个层,在层中,有上传图片的按钮,用户点击按钮上传图片,图片在服务器端按大小压缩保存(方便剪切).保存后,在前端显示,然后用户可修剪图片.选择图片区域,点击提交,保 ...
- mysql 事务类型表的用法
mysql关联表(references)的条件:1.两个表必须是 InnoDB表类型2.使用在外键关系的域必须为索引型(Index)3.使用外键关系的域必须与数据类型相似 以下是父表和子表的例子:创建 ...
- 点击listview 的列头对其item进行自动排序
若要自定义排序顺序,必须编写一个实现 IComparer 接口的类,并将 ListViewItemSorter 属性设置为该类的一个对象.当设置 ListViewItemSorter 属性值时,将自动 ...
- javaScript中with的用法
1 JavaScript中的with语句的作用是为逐级的对象访问提供命名空间式的速写方式, 也就是在指定的代码区域, 直接通过节点名称调用对象 初次接触到with用法,是这样一段代码: 1 2 3 4 ...
- js初学必知三重点
这里列出了一些JS重要知识点(不全面,但自己感觉很重要).彻底理解并掌握这些知识点,对于每个想要深入学习JS的朋友应该都是必须的. 讲解还是以示例代码搭配注释的形式,这里做个小目录: JS代码预解析原 ...
- Sublime Text 3 插件、主题、配置
换电脑,Sublime Text 3 重新配置一遍,做个记录 1. 下载:http://www.sublimetext.com/3 2. 插件管理器 Package Control (Ctrl + ` ...