前面一个系列中讲的是Fragment的内容,Android 3.0中除Fragment外,Action Bar同样也是一个很重要的知识点。我们经常使用Action Bar来替代传统的标题栏。如果是Android平板设备的话,屏幕越大,通过Action Bar设计的标题可以展示的内容越丰富,操作更加便捷。

  Action Bar主要功能包含:

  1. 显示选项菜单。
  2. 提供标签页的切换方式的导航功能,可以切换多个fragment。
  3. 提供下拉的导航条目。
  4. 提供交互式活动视图代替选项条目。
  5. 使用程序的图标作为返回Home主屏或向上的导航操作。

提示:在你的程序中应用ActionBar需要注意几点,SDK和最终运行的固件必须是Android 3.0即honeycomb,在androidmanifest.xml文件中的uses-sdk元素中加入android:minSdkVersion 或android:targetSdkVersion,类似:

XML/HTML代码
  1. < manifest xmlns:android="http://schemas.android.com/apk/res/android"
  2. package="eoe.android.cwj"
  3. android:versionCode="1"
  4. android:versionName="1.0">
  5. < uses-sdk android:minSdkVersion="honeycomb" />
  6. < application ... >
  7. < /application>
  8. < /manifest>

如果需要隐藏Action Bar可以在你的Activity的属性中设置主题风格为NoTitleBar在你的manifest文件中,下面的代码在3.0以前是隐藏标题,而在3.0以后就是隐藏ActionBar了,代码为:

XML/HTML代码
  1. < activity android:theme="@android:style/Theme.NoTitleBar">

一、添加活动条目 Action Items

  对于活动条目大家可以在下图看到Android 3.0的标题右部分可以变成工具栏,下面的Save和Delete就是两个Action Items活动条目。

  下面是一个menulayout布局文件代码:

XML/HTML代码
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <menu xmlns:android="http://schemas.android.com/apk/res/android">
  3. < item android:id="@+id/menu_add"
  4. android:icon="@drawable/ic_menu_save"
  5. android:title="@string/menu_save"
  6. android:showAsAction="ifRoom|withText" />
  7. </menu>

而其他代码类似Activity中的Menu,比如:

Java代码
  1. @Override
  2. public boolean onOptionsItemSelected(MenuItem item) {
  3. switch (item.getItemId()) {
  4. case android.R.id.home:
  5. // 当Action Bar的图标被单击时执行下面的Intent
  6. Intent intent = new Intent(this, Android123.class);
  7. startActivity(intent);
  8. break;
  9. }
  10. return super.onOptionsItemSelected(item);
  11. }

对于ActionBar的创建,可以在你的Activity中重写onStart方法:

Java代码
  1. @Override
  2. protected void onStart() {
  3. super.onStart();
  4. ActionBar actionBar = this.getActionBar();
  5. actionBar.setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP, ActionBar.DISPLAY_HOME_AS_UP);
  6. }

调用getActionBar方式在你的Activity的onCreate中时需要注意必须在调用了setContentView之后。

  二、添加活动视图 Action View

对于ActionView,我们可以在menu的布局文件使用中来自定义searchview布局,如下:

XML/HTML代码
  1. <item android:id="@+id/menu_search"
  2. android:title="Search"
  3. android:icon="@drawable/ic_menu_search"
  4. android:showAsAction="ifRoom"
  5. android:actionLayout="@layout/searchview" />

也可以直接指定Android系统中的SearchView控件,那么这时menu_search的代码要这样写:

XML/HTML代码
  1. <item android:id="@+id/menu_search"
  2. android:title="Search"
  3. android:icon="@drawable/ic_menu_search"
  4. android:showAsAction="ifRoom"
  5. android:actionViewClass="android.widget.SearchView" />

大家注意上面的两种方法中一个属性是actionLayout制定一个layout xml布局文件,一个是actionViewClass指定一个类,最终调用可以在Activity中响应onCreateOptionsMenu方法映射这个menu布局即可。

Java代码
    1. @Override
    2. public boolean onCreateOptionsMenu(Menu menu) {
    3. getMenuInflater().inflate(R.menu.options, menu);
    4. SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
    5. return super.onCreateOptionsMenu(menu);
    6. }

详解Android ActionBar之一:ActionBar概述与创建的更多相关文章

  1. 详解Android首选项框架ListPreference

    详解Android首选项框架ListPreference 原文地址 探索首选项框架 在深入探讨Android的首选项框架之前,首先构想一个需要使用首选项的场景,然后分析如何实现这一场景.假设你正在编写 ...

  2. 详解android:scaleType属性

    详解android:scaleType属性 转自:http://blog.csdn.net/encienqi/article/details/7913262    http://juliaailse. ...

  3. adb shell 命令详解,android

    http://www.miui.com/article-275-1.html http://noobjava.iteye.com/blog/1914348 adb shell 命令详解,android ...

  4. 详解Android Activity---启动模式

    相关的基本概念: 1.任务栈(Task)   若干个Activity的集合的栈表示一个Task.   栈不仅仅只包含自身程序的Activity,它也可以跨应用包含其他应用的Activity,这样有利于 ...

  5. Android Binder IPC详解-Android学习之旅(96)

    linux内存空间与BInder Driver Android进程和linux进程一样,他们只运行在进程固有的虚拟空间中.一个4GB的虚拟地址空间,其中3GB是用户空间,1GB是内核空间 ,用户空间是 ...

  6. 详解Android中的四大组件之一:Activity详解

    activity的生命周期 activity的四种状态 running:正在运行,处于活动状态,用户可以点击屏幕,是将activity处于栈顶的状态. paused:暂停,处于失去焦点的时候,处于pa ...

  7. adb shell 命令详解,android, adb logcat

    http://www.miui.com/article-275-1.html http://noobjava.iteye.com/blog/1914348 adb shell 命令详解,android ...

  8. 图文详解 Android Binder跨进程通信机制 原理

    图文详解 Android Binder跨进程通信机制 原理 目录 目录 1. Binder到底是什么? 中文即 粘合剂,意思为粘合了两个不同的进程 网上有很多对Binder的定义,但都说不清楚:Bin ...

  9. 详解 Android 通信

    详解 Android 通信 :http://www.androidchina.net/5028.html

  10. 详解Android Activity启动模式

    相关的基本概念: 1.任务栈(Task)   若干个Activity的集合的栈表示一个Task.   栈不仅仅只包含自身程序的Activity,它也可以跨应用包含其他应用的Activity,这样有利于 ...

随机推荐

  1. POI 中Cell的backgroundcolor和foregroundcolor

    刚开始以为要获得cell的背景色是使用  getFillBackgroundColor()这个函数(这里返回的是调色板的索引,要获得RGB需要先获得系统的Pallete,然后在获得 RGB).结果出来 ...

  2. 反编译.net dll

    自己公司的程序,年代久了,没有源代码,修改一些小地方,只能反编译,还好当时没有混淆. 先ildasm 反编译. 删除   .publickey = ( ) 这段,去原来签名. 然后再用找要改的IL,这 ...

  3. 通过移动的Mas接口发送短信

    1. 首先,需要移动公司提供的用户名.密码.服务ID.接口Url等信息. 2. 将短信信息整理成XML格式的字符串,再转为byte数组,通过POST的方式,将短信发往Mas接口.需要引用"M ...

  4. [swustoj 1021] Submissions of online judge

    Submissions of online judge(1021) 问题描述 An online judge is a system to test programs in programming c ...

  5. shape的属性

    <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http: ...

  6. PostgreSql字符串函数和操作符

    本节描述了用于检查和操作字符串数值的函数和操作符.在这个环境中的字符串包括所有 character, character varying, text 类型的值.除非另外说明,所有下面列出的函数都可以处 ...

  7. [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.5.8

    Prove that for any matrices $A,B$ we have $$\bex |\per (AB)|^2\leq \per (AA^*)\cdot \per (B^*B). \ee ...

  8. FOR 循环 索引从n 开始

    RF 中FOR 循环默认是从0开始,如果想从任意n开始如下所示: 方法一: 结果,如你所愿输出1-6: 方法二,利用FOR遍历list来实现: 结果: 这里注意是输出1-9而不是1-10

  9. HDU 1698 Just a Hook 区间更新 lazy标记

    lazy标记 #include <iostream> #include <cstdio> #include <cstring> #include <sstre ...

  10. android NDK 实用学习(三)- java端类对象的构造及使用

    1,读此文章前我假设你已经读过: android NDK 实用学习-获取java端类及其类变量 android NDK 实用学习-java端对象成员赋值和获取对象成员值 2,java端类对象的构造: ...