在Android3.0之后,Google对UI导航设计上进行了一系列的改革,当中有一个很好用的新功能就是引入的ActionBar,用于代替3.0之前的标题栏,并提供更为丰富的导航效果。

ActionBar能够显示应用图标和Activity标题,还有Action Item活动项。

ActionBar的主要用途:

1.能够设置该Activity的图标和标题。

2.能够配合Fragment用标签或是下拉列表实现不同页面的导航。

3.能够加入Action View为用户提供快捷的訪问。

启用ActionBar:

(1).高于Android3.0的版本号都是默认启用ActionBar的。我们会发现新建的Activity默认继承自ActionBarActivity。

假设希望关闭ActionBar,我们能够把主题设置为Xxx.NoActionBar。像以下这样:

<activity android:theme="@android:style/Theme.Holo.NoActionBar">

(2).我们也能够通过在代码中调用show()或者hide()方法来对应的显示或者隐藏ActionBar

.在我们使用actionBar.hide()方法时。系统默认会将ActionBar占用的空间分配给界面,此时显示的界面将会又一次绘制。相同调用actionBar.show();时也会又一次绘制界面。

假设我们一个程序须要频繁的显示或者隐藏ActionBar的话,这样就不会有良好的效果。

Google提供给一个属性能够让ActionBar浮在界面上,当然你能够让ActionBar的背景为透明。这样会有良好的体验效果。

(3).将选项菜单显示在活动条上

这是为了解决很多手机已经不再提供Menubutton的问题。

MenuItem提供了setShowAsAction(int actionEnum)方法将菜单项显示在ActionBar上作为Action
Item。

actionEnum可选的參数值例如以下:

SHOW_AS_ACTION_ALWAYS:总是将该MenuItem显示在ActionBar上。

SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW:将该Action View折叠成普通菜单项

SHOW_AS_ACTION_IF_ROOM:但ActionBar位置足够时显示该MenuItem。

SHOW_AS_ACTION_NEVER:不显示在ActionBar上

SHOW_AS_ACTION_WITH_TEXT:仅仅显示该MenuItem的文本在ActionBar上。

当然我们也能够改动菜单项的XML文件来将其显示在ActionBar上,仅仅须要改动<item.../>的android:showAsAction属性。

当手机顶部的ActionBar空间不够时,Android对不同的设备有不同的处理方式。有MENU按键的手机会将不能显示的菜单项显示在MENU按键激发的菜单上,没有MENU按键的手机则会在ActionBar的最后显示一个折叠图标。单击该图标会出现剩余的菜单项。

(4).将活动条上的应用图标转变成可点击的图标。

能够调用例如以下的这些方法:

setDisplayHomeAsUpEnabled(boolean showHomeAsUp):设置应用图标能否够点击,并在图标上加入一个向左的箭头,通常是用于回退到上级Activity。

setDisplayOptions(int options):控制ActionBar的显示选项。

setDisplayShowHomeEnable(boolean showHome):设置是否显示应用程序图标。

setHomeButtonEnabled(boolean enabled):设置是否将应用程序图标转变成可单击的button。

单击这个图标时。系统会调用Activity带有android.R.id.home ID的onOptionsItemSelected()方法。

为了能响应点击事件,我们还须要在选项菜单的onOptionsItemSelected方法中添加对应的处理。

(5).在活动条上显示Action View

我们能够通过例如以下两种方式在活动条上加入普通的组件。

1.定义Action Item时使用android:actionViewClass属性指定Action
View的实现类。

2定义Action Item时使用android:actionLayout属性指定Action
View的实现类。

(6).使用ActionBar实现Tab导航

在ActionBar上显示多个Tab标签,单击Tab标签会导航到指定的Tab页面。

实现Tab导航的过程例如以下:

1.为ActionBar设置模式为Tab导航setNavigationMode(ActionBar.NAVIGATION_MODE_TABS)。这种方法还能够设置參数ActionBar.NAVIGATION_MODE_LIST。那是用于实现下拉列表的。

2.调用ActionBar的addTab()方法,为活动条加入多个Tab标签。并为每一个Tab标签加入事件监听。

为了更好地展现Tab导航效果。我们经常将ActionBar和Fragment结合使用。

Fragment能够在一个Activity中创建多个页面。详细使用方法后面再介绍。

(7).除了Tab导航外。我们还能够用ActionBar实现下拉式导航。详细过程例如以下:

1.ActionBar设模式为下拉列表setNavigationMode(ActionBar.NAVIGATION_MODE_LIST)。

2.调用setListNavigationCallbacks(SpinnerAdapter adapter,ActionBar.OnNavigationListener callback)方法,为下拉列表加入多个列表项和列表项的事件监听器。

Android学习笔记(35):Android活动条的更多相关文章

  1. android学习笔记20——ProgressDialog进度条对话框

    ProgressDialog==>进度条对话框 ProgressDialog本身就代表一个进度条对话框,程序只需要创建ProgressDialog实例,并将其显示出来就是一个进度条对话框:开发者 ...

  2. Android学习笔记_76_Android ProgressBar 进度条

    android 进度条的样式  例1:(默认样式(中等圆形))Xml代码 <ProgressBar      android:id="@+id/progressBar1"   ...

  3. android学习笔记35——AnimationDrawable资源

    AnimationDrawable资源 AnimationDrawable,代表一个动画. android既支持传统的逐帧动画(类似于电影方式,一张图片一张图片的切换),也支持通过平移.变换计算出来的 ...

  4. Android学习笔记1 android adb启动失败问题 adb server is out of date. killing...

    下面是Android的学习笔记,原文地址. 我是使用adb devices出现如下红字错误, 使用第一种方法方法,结果关掉豌豆荚就可以了. android adb启动失败问题 adb server i ...

  5. Android学习笔记之Android Studio添加新的Activity

    1.创建Android项目工程:AndroidTest 创建过程可参考网上诸多教程. 2.添加新的Activity,步骤如下 a. 在layout文件夹上右键,New-Activity-相应Activ ...

  6. android学习笔记(9)android程序调试学习

    相应若水老师的第十四课 一,Log日志输出 Log.v(tag,message);        //verbose模式,打印最具体的日志  Log.d(tag,message);        // ...

  7. Android学习笔记之 android:collapseColumns ,android:shrinkColumns 和stretchColumns

    摘自:http://blog.csdn.net/sjf0115/article/details/7213565/ TableLayout是一个使用复杂的布局,最简单的用法就仅仅是拖拉控件做出个界面,但 ...

  8. android学习笔记45——android的数据存储和IO

    android的数据存储和IO SharedPreferences与Editor简介 SharedPreferences保存的数据主要是类似于配置信息格式的数据,因此其保存的数据主要是简单的类型的ke ...

  9. Android学习笔记之Android Studio下创建menu布局文件

    1.创建menu文件夹 Android Studio项目中如果没有menu文件夹,在res文件夹右键,new-Android resource directory: 则会弹出下图对话框,在Resour ...

随机推荐

  1. 常用C/C++预处理指令详解

    预处理是在编译之前的处理,而编译工作的任务之一就是语法检查,预处理不做语法检查.预处理命令以符号“#”开头. 常用的预处理指令包括: 宏定义:#define 文件包含:#include 条件编译:#i ...

  2. BZOJ 2243 染色 树链剖分

    题意: 给出一棵树,每个顶点上有个颜色\(c_i\). 有两种操作: C a b c 将\(a \to b\)的路径所有顶点上的颜色变为c Q a b 查询\(a \to b\)的路径上的颜色段数,连 ...

  3. Makefile基础(二)

    上一章:C语言之Makefile基础(一) 上一章的Makefile写的中规中矩,比较繁琐,是为了讲清楚基本概念,其实Makefile有很多灵活的写法,可以写的更简洁,同时减少出错的可能 一个目标依赖 ...

  4. 详解Python中的相对导入和绝对导入

    Python 相对导入与绝对导入,这两个概念是相对于包内导入而言的.包内导入即是包内的模块导入包内部的模块. Python import 的搜索路径 在当前目录下搜索该模块 在环境变量 PYTHONP ...

  5. 在O(1)时间内删除链表结点 【微软面试100题 第六十题】

    题目要求: 给定链表的头指针和一个结点指针,在O(1)时间删除该结点. 参考资料:剑指offer第13题. 题目分析: 有几种情况: 1.删除的结点是头结点,且链表不止一个结点: 2.删除的结点是头结 ...

  6. PHP变量的生命周期

    变量不仅有其特定的作用范围,还有其存活的周期--生命周期.变量的生命周期指的是变量可被使用的一个时间段,在这个时间段内变量是有效的,一旦超出这个时间段变量就会失效,我们就不能够再访问到该变量的值了. ...

  7. 九度oj 题目1356:孩子们的游戏(圆圈中最后剩下的数)

    题目描述: 每年六一儿童节,JOBDU都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为JOBDU的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈. ...

  8. HDU2013 蟠桃记【递推】

    Problem Description 喜欢西游记的同学肯定都知道悟空偷吃蟠桃的故事,你们一定都觉得这猴子太闹腾了,其实你们是有所不知:悟空是在研究一个数学问题!什么问题?他研究的问题是蟠桃一共有多少 ...

  9. (转)关于Jackson2.x中com.fasterxml.jackson包的用法

    Jackson应该是目前最好的json解析工具了,之前一直用的是org.codehaus.jackson包中的工具,使用的 包是jackson-all-1.9.11.jar. 最近发现Jackson升 ...

  10. 使用Matlab实现对图片的缩放

    在做图像处理的时候,有时需要对图片的像素进行放大或则缩小. 使用Matlab很容易实现对图像的放大和缩小.这里只讲缩放到固定像素的方法. clear; clc; %清除以前的数据 folderName ...