前面一个系列中讲的是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. Dubbo实例

    1. Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需 ...

  2. 深入分析Cookie的安全性问题

    Cookie的目的是为用户带来方便,为网站带来增值,一般情况下不会造成严重的安全威胁.Cookie文件不能作为代码执行,也不会传送病毒,它为用户所专有并只能由创建它的服务器来读取.另外,浏览器一般只允 ...

  3. Java [leetcode 30]Substring with Concatenation of All Words

    题目描述: You are given a string, s, and a list of words, words, that are all of the same length. Find a ...

  4. CSS中的块级元素与行级元素

    最近初学CSS时对块级元素与行级元素有时会产生混淆,写篇博客记录一下自己对其的理解. 先从概念上来看: 块级元素 特点:1.每个块级元素都是独自占一行,其后的元素也只能另起一行,并不能两个元素共用一行 ...

  5. Android学习系列(1)--为App签名(为apk签名)

    写博客是一种快乐,前提是你有所写,与人分享,是另一种快乐,前提是你有舞台展示,博客园就是这样的舞台.这篇文章是android开发人员的必备知识,是我特别为大家整理和总结的,不求完美,但是有用. 1.签 ...

  6. POJ 1001 Exponentiation

    题意:求c的n次幂……要求保留所有小数…… 解法:一开始只知道有BigInteger……java大数+模拟.第一次写java大数……各种报错各种exception……ORZ 没有前导0和小数后面的补位 ...

  7. spring+mybatis 多数据源整合

    <!-- 数据源配置 -->   <bean id="ds1" class="org.apache.commons.dbcp.BasicDataSour ...

  8. 单实例运行tz

    (引用了 Microsoft.VisualBasic.ApplicationServices)SingleInstanceApplicationWrapper.cs    using System.W ...

  9. NGINX(七)分段下载

    前言 nginx分段下载通过ngx_http_range_filter_module模块进行处理,关于HTTP分段下载过程,可以参考HTTP分段下载一文,主要分为一次请求一段和一次请求多段 涉及数据结 ...

  10. lightoj 1019

    裸的最短路 dijkstra #include<cstdio> #include<string> #include<cstring> #include<ios ...