Android开发笔记(二十)顶部导航栏ActionBar

标题栏ActionBar

ActionBar是在Android3.0之后引入的,所以Android2.x之前的版本不能直接使用ActionBar。现在ActionBar广泛用做APP的顶部导航栏,它在布局上主要分为三部分:左边是返回区域,包括logo、返回箭头、左侧标题等等;右边是菜单区域,放的是溢出菜单OverflowMenu的各菜单项;中间是条件区域,包括导航项Navigation(下拉列表与标签切换)、搜索框SearchView,以及可自定义的定制视图CustomView。


显示或者关闭ActionBar的方式有如下几种:
1、在AndroidManifest.xml中给activity设置无标题栏的主题,就关闭ActionBar。否则就显示
<activity android:theme="@android:style/Theme.Holo.NoActionBar"> 
2、在styles.xml的当前主题中加入一个项android:windowNoTitle,为true时表示关闭ActionBar;为false表示显示
<item name="android:windowNoTitle">true</item>
3、在Activity代码的setContentView之前加入下面代码,就关闭ActionBar。否则就显示
requestWindowFeature(Window.FEATURE_NO_TITLE);
4、在Activity代码中获得ActionBar实例,调用该实例的hide方法表示关闭ActionBar;调用show方法表示显示
ActionBar actionBar = getActionBar();
if (actionBar != null) {
    actionBar.hide();  //隐藏ActionBar
    actionBar.show();  //显示ActionBar
}


ActionBar的基本设置

ActionBar其上各控件的开关设置说明如下:
setDisplayUseLogoEnabled : 是否在左侧返回区域显示logo,默认显示
setDisplayHomeAsUpEnabled : 是否在左侧返回区域显示返回箭头,默认不显示
setDisplayShowTitleEnabled : 是否在左侧返回区域显示左侧标题,默认显示APP名称
setTitle : 设置左侧标题的文本
setBackgroundDrawable : 设置ActionBar的背景图像
setDisplayShowCustomEnabled : 是否在中间条件区域显示定制视图
setNavigationMode : 设置导航项的样式,NAVIGATION_MODE_STANDARD表示不显示,NAVIGATION_MODE_LIST表示显示下拉列表,NAVIGATION_MODE_TABS表示显示标签切换。默认不显示


setDisplayOptions : 设置显示的选项参数,以“|”连接,各参数与设置函数的对应关系如下:
DISPLAY_USE_LOGO : 对应setDisplayUseLogoEnabled
DISPLAY_SHOW_HOME : 无对应函数,该参数表示需要显示左侧返回区域
DISPLAY_HOME_AS_UP : 对应setDisplayHomeAsUpEnabled
DISPLAY_SHOW_TITLE : 对应setDisplayShowTitleEnabled
DISPLAY_SHOW_CUSTOM : 对应setDisplayShowCustomEnabled


溢出菜单OverflowMenu

OverflowMenu其实就是把选项菜单OptionsMenu搬到了页面右上方,具体使用方法与Menu是一样的,所以就不多说了。下面列一下几个注意点:
1、菜单项的布局定义中,要把showAsAction属性设置好。该属性的取值类型主要有:
ifRoom : 如果ActionBar右侧有空间,则该项直接显示在ActionBar上面,不再放入溢出菜单。
never : 从不在ActionBar上直接显示,一直放在溢出菜单里面。
always : 总是在ActionBar上显示。
withText : 如果能在ActionBar上显示,则除了显示该项的图标,还要显示该项的文字说明。
collapseActionView : 不常用,而且比较麻烦,若有兴趣可自行查阅资料。
2、Android手机一般都有物理按键,按下物理按键的菜单键,有的手机在顶部显示选项菜单而不是在右上角显示,有的手机干脆不显示任何菜单(常见于Android4.2.2以下系统)。所以为了兼容不同手机不同系统,我们需要对溢出菜单做特殊处理,将物理按键加以屏蔽,强制显示OverflowMenu。
3、放入溢出菜单的菜单项,Android默认不在菜单文字左侧显示图标,就算在菜单布局文件中设置了android:icon也不管用。所以要想在菜单列表中显示左侧图标,需要调用MenuBuilder的setOptionalIconsVisible方法(MenuBuilder在Android内核中,未开放出来,只能通过反射机制来调用)。




导航项Navigation

使用导航项需要在ActionBar中将其设置为具体模式(setNavigationMode),目前ActionBar支持两种导航模式:
1、NAVIGATION_MODE_LIST: 表示采用下拉列表模式;
2、NAVIGATION_MODE_TABS: 表示采用标签切换模式;
下拉列表模式的使用方法类似Spinner,也要设置列表文本的ArrayAdapter与监听器。不同的是Spinner的监听器继承自OnItemSelectedListener,而Navigation的监听器继承自OnNavigationListener。
标签切换模式在实际开发中用得不多,类似效果一般采用底部标签栏或者ViewPager实现。


定制视图CustomView

定制视图用于在ActionBar上显示一些个性化内容,比如说,ActionBar自带的标题文字位于左侧区域,而且也不能调整文字大小、颜色等等,如果我们想把标题文本挪到中间,还要设置文字样式的话,就得使用定制视图了。
使用定制视图需要在ActionBar中将其设置为可用(set
  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值