在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,类似

  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了,代码为:

  1. < activity android:theme="@android:style/Theme.NoTitleBar">

一、添加活动条目 Action Items

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

  下面是一个menu的layout布局文件代码

  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,比如

  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方法:

  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布局,如下:

  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的代码要这样写:

  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布局即可.

    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. }
【JAVA】鉴于plaincopy

Android ActionBar详解(一):ActionBar概述及其创建的更多相关文章

  1. Android ActionBar详解(三)--->ActionBar的Home导航功能

    FirstActivity如下: package cc.testsimpleactionbar2; import android.os.Bundle; import android.app.Activ ...

  2. (转)android Fragments详解一:概述

    Fragment是activity的界面中的一部分或一种行为.你可以把多个Fragment们组合到一个activity中来创建一个多面界面并且你可以在多个activity中重用一个Fragment.你 ...

  3. Android Loader详解一:概述

    装载器从android3.0开始引进.它使得在activity或fragment中异步加载数据变得简单.装载器具有如下特性: 它们对每个Activity和Fragment都有效. 他们提供了异步加载数 ...

  4. Android Fragment详解(一):概述

    Fragment是activity的界面中的一部分或一种行为.你可以把多个Fragment们组合到一个activity中来创建一个多面界面并且你可以在多个activity中重用一个Fragment.你 ...

  5. Android ActionBar详解

    Android ActionBar详解 分类: Android2014-04-30 15:23 1094人阅读 评论(0) 收藏 举报 androidActionBar   目录(?)[+]   第4 ...

  6. Android Notification 详解(一)——基本操作

    Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...

  7. Android Notification 详解——基本操作

    Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...

  8. Android ConstraintLayout详解(from jianshu)

    Android ConstraintLayout详解 https://www.jianshu.com/p/a8b49ff64cd3 1. 概述     在本篇文章中,你会学习到有关Constraint ...

  9. Android HandlerThread详解

    概述 Android HandlerThread使用,自带Looper消息循环的快捷类. 详细 代码下载:http://www.demodashi.com/demo/10628.html 原文地址: ...

  10. Android 签名详解

    Android 签名详解 AndroidOPhoneAnt设计模式Eclipse  在Android 系统中,所有安装 到 系统的应用程序都必有一个数字证书,此数字证书用于标识应用程序的作者和在应用程 ...

随机推荐

  1. Linux下查看显卡型号

    查看显卡使用 lspci |grep VGAemos@emos-desktop:~$ lspci -vnn | grep -i vga00:02.0 VGA compatible controller ...

  2. 带搜索功能,支持绑定对象到节点的TreeView辅助类

    特点: 1.支持数叶子节点与对象绑定 2.支持xml导入,且数据类相关的xml可自定义,只和泛型的实现有关 3.支持节点搜索功能,可在树结构上要求只显示部分节点 4.用C#编写,但与平台关联性低,可移 ...

  3. C/C++中new关键字是否加括号的区别

    代码: #include <iostream> using namespace std; class A{ public: int a; }; int main(){ A *a1 = ne ...

  4. 求解:C#.Net 远程方法调用失败 (Exception from HRESULT: 0x800706BE)

    服务器:Windows Server2003 sp2服务器 客户端:XP SP3 内容:C#Winform客户端调用服务器的Excel模板生成报表的时候,生成失败,抛出的异常如下: TargetInv ...

  5. 服务器是windows时tomcat无法打印所有日志配置修改

    Tomcat运行仅一天磁盘空间突然就增加了很多,发现是日志文件太大了,修改tomcat的日志配置即可. 查看目录所占空间大小: ? 1 [root@XXX webapps]du -sh 清理方法: ? ...

  6. 如何写一个网页标题title的闪动提示

    通过网页title来提示用户有新消息这个功能很常见,比如现在的微博,还有一些邮箱,这个功能都很常见.如何实现则个功能呢? 思路是:通过ajax访问后台,若有新消息,则将网页的title替换为 提示信息 ...

  7. php随机抽奖

    貌似有些不合理,麻烦大家帮忙指正指正!谢谢~ <?php header("content-type:text/html;charset=utf-8"); function g ...

  8. C#实现窗体间的通信

    以下将窗体间的几种通信实现方式做一下罗列:首先新建一个窗体Form1,在其中放置一个Textbox.Button控件.再新建一个窗体Form2,其上放置一个Button控件.具体代码示例如下: //F ...

  9. kettle 连接 mysql 出错 Driver class 'org.gjt.mm.mysql.Driver' could not be found, make sure the ……

    解决办法:1: 首先,到官网下载mysql-connector-java. 2: 把驱动文件放置在data-integration\lib\ 目录下

  10. laravel实现发送qq邮件

    首先修改config/mail.php 'from' => [ 'address' => 'hello@example.com', 'name' => 'Example', ], 修 ...