详解Android ActionBar之一:ActionBar概述与创建
前面一个系列中讲的是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,类似:
- < manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="eoe.android.cwj"
- android:versionCode="1"
- android:versionName="1.0">
- < uses-sdk android:minSdkVersion="honeycomb" />
- < application ... >
- < /application>
- < /manifest>
如果需要隐藏Action Bar可以在你的Activity的属性中设置主题风格为NoTitleBar在你的manifest文件中,下面的代码在3.0以前是隐藏标题,而在3.0以后就是隐藏ActionBar了,代码为:
- < activity android:theme="@android:style/Theme.NoTitleBar">
一、添加活动条目 Action Items
对于活动条目大家可以在下图看到Android 3.0的标题右部分可以变成工具栏,下面的Save和Delete就是两个Action Items活动条目。
- <?xml version="1.0" encoding="utf-8"?>
- <menu xmlns:android="http://schemas.android.com/apk/res/android">
- < item android:id="@+id/menu_add"
- android:icon="@drawable/ic_menu_save"
- android:title="@string/menu_save"
- android:showAsAction="ifRoom|withText" />
- </menu>
而其他代码类似Activity中的Menu,比如:
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case android.R.id.home:
- // 当Action Bar的图标被单击时执行下面的Intent
- Intent intent = new Intent(this, Android123.class);
- startActivity(intent);
- break;
- }
- return super.onOptionsItemSelected(item);
- }
对于ActionBar的创建,可以在你的Activity中重写onStart方法:
- @Override
- protected void onStart() {
- super.onStart();
- ActionBar actionBar = this.getActionBar();
- actionBar.setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP, ActionBar.DISPLAY_HOME_AS_UP);
- }
调用getActionBar方式在你的Activity的onCreate中时需要注意必须在调用了setContentView之后。
二、添加活动视图 Action View
对于ActionView,我们可以在menu的布局文件使用中来自定义searchview布局,如下:
- <item android:id="@+id/menu_search"
- android:title="Search"
- android:icon="@drawable/ic_menu_search"
- android:showAsAction="ifRoom"
- android:actionLayout="@layout/searchview" />
也可以直接指定Android系统中的SearchView控件,那么这时menu_search的代码要这样写:
- <item android:id="@+id/menu_search"
- android:title="Search"
- android:icon="@drawable/ic_menu_search"
- android:showAsAction="ifRoom"
- android:actionViewClass="android.widget.SearchView" />
大家注意上面的两种方法中一个属性是actionLayout制定一个layout xml布局文件,一个是actionViewClass指定一个类,最终调用可以在Activity中响应onCreateOptionsMenu方法映射这个menu布局即可。
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.options, menu);
- SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
- return super.onCreateOptionsMenu(menu);
- }
详解Android ActionBar之一:ActionBar概述与创建的更多相关文章
- 详解Android首选项框架ListPreference
详解Android首选项框架ListPreference 原文地址 探索首选项框架 在深入探讨Android的首选项框架之前,首先构想一个需要使用首选项的场景,然后分析如何实现这一场景.假设你正在编写 ...
- 详解android:scaleType属性
详解android:scaleType属性 转自:http://blog.csdn.net/encienqi/article/details/7913262 http://juliaailse. ...
- adb shell 命令详解,android
http://www.miui.com/article-275-1.html http://noobjava.iteye.com/blog/1914348 adb shell 命令详解,android ...
- 详解Android Activity---启动模式
相关的基本概念: 1.任务栈(Task) 若干个Activity的集合的栈表示一个Task. 栈不仅仅只包含自身程序的Activity,它也可以跨应用包含其他应用的Activity,这样有利于 ...
- Android Binder IPC详解-Android学习之旅(96)
linux内存空间与BInder Driver Android进程和linux进程一样,他们只运行在进程固有的虚拟空间中.一个4GB的虚拟地址空间,其中3GB是用户空间,1GB是内核空间 ,用户空间是 ...
- 详解Android中的四大组件之一:Activity详解
activity的生命周期 activity的四种状态 running:正在运行,处于活动状态,用户可以点击屏幕,是将activity处于栈顶的状态. paused:暂停,处于失去焦点的时候,处于pa ...
- adb shell 命令详解,android, adb logcat
http://www.miui.com/article-275-1.html http://noobjava.iteye.com/blog/1914348 adb shell 命令详解,android ...
- 图文详解 Android Binder跨进程通信机制 原理
图文详解 Android Binder跨进程通信机制 原理 目录 目录 1. Binder到底是什么? 中文即 粘合剂,意思为粘合了两个不同的进程 网上有很多对Binder的定义,但都说不清楚:Bin ...
- 详解 Android 通信
详解 Android 通信 :http://www.androidchina.net/5028.html
- 详解Android Activity启动模式
相关的基本概念: 1.任务栈(Task) 若干个Activity的集合的栈表示一个Task. 栈不仅仅只包含自身程序的Activity,它也可以跨应用包含其他应用的Activity,这样有利于 ...
随机推荐
- 错误代码: 1005 Can't create table 'hibernate.bill' (errno: 150)
主要问题以及解决办法是: 1,MySQL支持外键约束,并提供与其它DB相同的功能,但表(外键表和外键主表)类型必须为 InnoDB,外键表和外键主表的类型都要是innoDB 建表约束语句: user表 ...
- poj3321
树映射到树状数组上 非常好的题目,给了我很多启发 题目要求动态求一个棵子树的节点个数 不禁联想到了前缀和,只要我们能用一个合适的优先级表示每个顶点,那么就好做了 我们可以考虑将子树表示成区间的形式 这 ...
- C#控件背景透明的几种解决方案
已经很少做winform程序了,最新参与了一个小项目,遇到了控件背景透明的功能要求,特在此总结一下,供有需要的同行参考. 0.背景透明的概念和分类 背景透明是啥意思呢,就是背景透明.哈哈,废话了.其实 ...
- ↗☻【PHP与MySQL程序设计 #BOOK#】第3章 PHP基础
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...
- 【JMeter】JMeter使用plugins插件进行服务器性能监控
性能测试时,我们的关注点有两部分 1 服务本身:并发 响应时间 QPS 2 服务器的资源使用情况:cpu memory I/O disk等 JMeter的plugins插件可以实现对"二&q ...
- javascript-实现日期大写
<script language="javascript"> $(document).ready(function() { //定义中文数组 var chinese = ...
- QTP、LoadRunner、QC工具下载地址
QTP10.0工具下载地址:http://h30302.www3.hp.com/prdownloads/T6510-15063.zip?ordernumber=380454070&itemid ...
- C语言基础--结构体对齐,位域,联合体
结构体对齐 1--结构体对齐的原因与意义 许多计算机系统对基本数据类型的可允许地址做出了一些限制,要求某种类型的对象的地址必须是某个值K(通常是2,4,8)的倍数,而这个k则被称为该数据类型的对齐模数 ...
- cygwin远程操作linux
远程登录 1.ssh <username>@<IP> eg:ssh root@10.20.30.255 2.输入密码就OK 远程拷贝 1.scp -r <username ...
- Redhat Enterprise Linux 6.4图形界面的中文问题
一.界面中文,但Windows中的中文文件名上传到linux后乱码. .bashrc文件: export LANG=zh_CN.UTF-8 /etc/sysconfig/i18n文件: LANG=&q ...