Android ActionBar动作栏

作者:steven

一、ActionBar:(动作栏)

(一)、简介:(扩展TitleBar)

Action bar(动作栏)是一个导航控件,用以代替传统屏幕顶端的标题栏。ActionBar显示在屏幕顶部的控件,它包括了在左边显示的应用的logo图标和右边操作菜单的可见项。类似于windows桌面程序的工具栏。

效果如下图:

actionbar

1、ActionBar主要功能:

Action Bar被认为是新版Android系统中最重要的交互元素,在程序运行中一直置于顶部,主要起到的作用在于:

1)突出显示一些重要操作(如“注册”、“登录”、“搜索”等)。将平时隐藏的选项菜单显示成活动项ActionItem。

2)在程序中保持统一的页面导航和切换方式。这种基于Tab的导航方式,可以切换多个Fragment。

3)提供基于下拉的导航菜单。

4)使用程序logo,作为返回APP的HOME主页面或向上的导航操作。

2、ActionBar分成四个区域:


ActionBar

•App Icon:可显示APP的icon,也可用其他图标代替。当软件不在最高级页面时,图标左侧会显示一个左箭头,用户可以通过这个箭头向上导航。

•视图切换:(效果如下图)

•Action Buttons:这个放最重要的软件功能,放不下的按钮就自动进入Action overflow了。

•Action overflow:不常用的操作项目自动进入Action overflow


overflow

【备注:】什么是Action overflow

对于没有MENU按键的手机,ActionBar会在最后显示一个折叠的图标,点击该图标会显示剩余的选项菜单项。这个折叠的图标功能就是Action overflow。

Action overflow中存放并不会频繁用到的操作。按照官方网页上的说法,“Overflow图标仅显示在没有MENU硬按键的手机上,而对于有MENU键的手机,

overflow图标是不显示的,当用户点击MENU按键时弹出。”  事实上Google已经敦促手机厂商及软件开发商取消MENU菜单。也就是以前的Menu将不再使用。

(二)、创建ActionBar:

1、XML资源文件中定义menu。同样可以有普通菜单、二级普通菜单、二级可选项菜单。


创建actionbar

android:showAsAction属性值的解释:

•never: 不将该MenuItem显示在ActionBar上(是默认值)

•always: 总是将该MenuItem显示在ActionBar上

•ifRoom: 当AcitonBar位置充裕时将该MenuItem显示在ActionBar上

•withText: 将该MenuItem显示在ActionBar上,并显示该菜单项的文本。但是只在宽屏状态下显示。

•collapseActionView  : 将该ActionView折叠成普通菜单项。最低API=14

多个属性可以同时使用,使用“|”分隔。

(三)、启动程序图标导航:(就是让APP的LOGO也变成可以点击的导航图标。)

核心代码如下:


启动程序图标导航

代码解释:

1.actionBar =getActionBar();    获取ActionBar对象。

2.actionBar.setDisplayHomeAsUpEnabled(true);      设置是否将LOGO图标转成可点击的按钮,并在图标前添加一个向左的箭头。

3.actionBar.setHomeButtonEnabled(true);      设置是否将LOGO图标转变成可点击的按钮。

4.actionBar.setDisplayShowHomeEnabled(true);     设置是否显示LOGO图标。

(四)、ActionBar中添加Action View:

1、Action的学习要掌握如何将选项菜单显示成Action Item;

2、要掌握如何启动程序Logo导航;

3、ActionBar还可以添加Action View。

调用方式1为:在xml文件中写上android:actionLayout="@layout/布局名"。

调用方式2为:在xml文件中写上android:actionViewClass="android.widget.SearchView"。

4、示例代码:

核心代码如下:

ActionBar中添加Action View:
显示时钟的布局

(五)、ActionBar在窗体底部显示:

在清单配置文件中设置android:uiOptions属性为:splitActionBarWhenNarrow

可以在application或者activity节点中。

1、核心代码:


ActionBar在窗体底部

(六)、ActionBar的导航模式:

1、TAB标签导航模式:

actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TAB);

2、下拉列表导航模式:

actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);

(七)、ActionBar保护现场:

1、目的:当横竖屏切换时,会让页面重新加载。在tab模式下,如何记住之前的tab索引呢?需要保护现场。

2、核心代码:

ActionBar保护现场

(八)、横竖屏切换时的生命周期问题的解决(android:configChanges属性)

对android:configChanges属性,一般认为有以下几点:

1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次

2、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次

3、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法

但是,自从Android 3.2(API 13),在设置Activity的android:configChanges="orientation|keyboardHidden"后,还是一样 会重新调用各个生命周期的。因为screen size也开始跟着设备的横竖切换而改变。所以,在AndroidManifest.xml里设置的MiniSdkVersion和 TargetSdkVersion属性大于等于13的情况下,如果你想阻止程序在运行时重新加载Activity,除了设置"orientation", 你还必须设置"ScreenSize"。

解决方法:AndroidManifest.xml中设置android:configChanges="orientation|screenSize“

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容