本文转自: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提供的扩展组件)的更多相关文章

  1. Android应用Design Support Library完全使用实例

    阅读目录 2-1 综述 2-2 TextInputLayout控件 2-3 FloatingActionButton控件 2-4 Snackbar控件 2-5 TabLayout控件 2-6 Navi ...

  2. 安卓高级3 Android应用Design Support Library完全使用实例

    原作者:http://www.open-open.com/lib/view/open1433385856119.html 1 背景 上周一年一度的Google IO全球开发者大会刚刚结束,Google ...

  3. Android material design support library -- CollapsingToolbarLayout简介

    本文是codetrick上material design support library教程的第三篇,主要讲的是CollapsingToolbarLayout的概念和应用方法. 原文链接:Materi ...

  4. Android Studio:Support Library依赖包的版本号

    当我们用RecyclerView时,如果想用某一个特定的版本,怎样才能知道版本号呢?如果自己的笔记本中用过这个库,那么会保存在本地硬盘中. Android自身依赖包的版本号本地存放路径:  没有用过该 ...

  5. Android Meterial Design Support Library

    extends:http://inthecheesefactory.com/blog/android-design-support-library-codelab At the moment I be ...

  6. 【转】【翻】Android Design Support Library 的 代码实验——几行代码,让你的 APP 变得花俏

    转自:http://mrfufufu.github.io/android/2015/07/01/Codelab_Android_Design_Support_Library.html [翻]Andro ...

  7. Android Design Support Library 的 代码实验——几行代码,让你的 APP 变得花俏

    原文:Codelab for Android Design Support Library used in I/O Rewind Bangkok session--Make your app fanc ...

  8. Android Design Support Library: 学习CoordinatorLayout

    简述 CoordinatorLayout字面意思是"协调器布局",它是Design Support Library中提供的一个超级帧布局,帮助我们实现Material Design ...

  9. Material Design 开发利器:Android Design Support Library 介绍

    转自:https://blog.leancloud.cn/3306/ Android 5.0 Lollipop 是迄今为止最重大的一次发布,很大程度上是因为 material design —— 这是 ...

随机推荐

  1. Windows Server 2008 计划任务配置(任务计划程序)每分钟执行BAT

    首先Windows Server 2008不同于其他服务器操作系统和Windows Server 2003有着很大的区别,计划任务的名称是“任务计划程序”不在控制面板里,而是在“管理工具”里. 由于服 ...

  2. com和dll(一)

    1.com为一种规范,使不同语言能在二进制层面上进行交互. 2.dll为ms的一种程序打包文件,使程序的代码能分开打包编译,并能在运行时共享.

  3. 页面资源预加载(Link prefetch)功能加速你的页面加载速度

    有了浏览器缓存,为何还需要预加载? 用户可能是第一次访问网站,此时还无缓存 用户可能清空了缓存 缓存可能已经过期,资源将重新加载 用户访问的缓存文件可能不是最新的,需要重新加载 页面资源预加载/预读取 ...

  4. IntelliJ IDEA14 和 Maven 系列:使用IntelliJ IDEA 14和Maven 7 创建java web项目(一)

    Intellij IDEA作为最好的Java IDE,创建Maven项目还是比较简单的,但是创建一个Maven Web项目还是要修改一些配置的,下面进行总结整理. 1前言 在创建项目中,IDEA提供了 ...

  5. jQuery如何检查某个元素在网页上是否存在

    $("ID")获取的永远是对象,即使网页上没有此元素.因此当要用jQuery检查某个元素在网页上是否存在时,不能使用以下代码: if($("#ID")){ // ...

  6. JQ封装切换滚动功能

    /*---------控制滚动图片v1(作者:SFLYQ)-----------Options 配置对象,(用来配置控制元素的dom位置,初始化一些必要的对象或者方法)DoIni 初始化操作(初始化元 ...

  7. 对BFC的理解

    转载http://www.cnblogs.com/lhb25/p/inside-block-formatting-ontext.html 在解释 BFC 是什么之前,需要先介绍 Box.Formatt ...

  8. 用javascript操作xml(二)JavaScript 将XML转换成字符串(xml to string)

    function xmlToString(xmlData) { var xmlString; //IE if (window.ActiveXObject){ xmlString = xmlData.x ...

  9. [記錄用]python py2app 檔案批次重新命名

    demo.py 主要作用為 將同目錄下 *.mp4 檔案批次重新命名 例如: aaa001.mp4 ---重新命名為--> 001.mp4 aaa002.mp4 ---重新命名為--> 0 ...

  10. #Leet Code# Best Time to Buy and Sell Stock

    描述:数组 A,对于 i < j, 找到最大的 A[j] - A[i] 代码: class Solution: # @param prices, a list of integer # @ret ...