怎么在Android应用中利用ActionBar实现一个导航栏功能

  介绍

怎么在Android应用中利用ActionBar实现一个导航栏功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

操作栏是一种新増的导航栏功能,在Android 3.0之后加入到系统的API当中,它标识了用户当前操作界面的位置,并提供了额外的用户动作,界面导航等功能。使用ActionBar的好处是,它可以给提供一种全局统一的UI界面,使得用户在使用任何一款软件时都懂得该如何操作,并且ActionBar还可以自动适应各种不同大小的屏幕下。面是一张使用ActionBar的界面截图:

其中,[1]是ActionBar的图标,[2]是两个动作按钮,[3]是溢出按钮。

由于操作栏是在3.0以后的版本中加入的,如果想在2。x的版本里使用ActionBar的话则需要引入支持库,不过3.0之前版本的市场占有率已经非常小了,这里简单起见我们就不再考虑去做向下兼容,而是只考虑4.0以上版本的用法。

ActionBar的添加非常简单,只需要在AndroidManifest.xml中指定应用程序或活动的主题是Theme.Holo或其子类就可以了,而使用Eclipse创建的项目自动就会将应用程序的主题指定成Theme.Holo,所以ActionBar默认都是显示出来的。

而如果想要移除ActionBar的话通常有两种方式,一是指将主题定成Theme.Holo。NoActionBar,表示使用一个不包含ActionBar的主题,二是在活动中调用以下方法:

 ActionBar ActionBar=getActionBar ();
  actionBar.hide ();

<强>修改操作栏的图标和标题

默认情况下,系统会使用& lt; application>或者& lt; activity>中图标属性指定的图片来作为ActionBar的图标,但是我们也可以改变这一默认行为。如果我们想要使用另外一张图片来作为ActionBar的图标,可以在& lt; application>或者& lt; activity>中通过商标属性来进行指定。比如项目的res/可拉的目录下有一张weather.png图片,就可以在AndroidManifest。xml中这样指定:

& lt;活动android: name=癱om.example.actionbartest.MainActivity"   android:标志=癅drawable/weather"比;   & lt;/activity>

好的,ActionBar的图标已经修改成功了,那么标题中的内容该怎样修改呢?其实也很简单,使用标签属性来指定一个字符串就可以了,如下所示:

& lt;活动android: name=癱om.example.actionbartest.MainActivity"   android: label=疤炱?   android:标志=癅drawable/weather"比;   & lt;/activity>

<强>添加行动按钮

ActionBar还可以根据应用程序当前的功能来提供与其相关的动作按钮,这些按钮都会以图标或文字的形式直接显示在ActionBar上。当然,如果按钮过多,ActionBar上显示不完,多出的一些按钮可以隐藏在溢出里面(最右边的三个点就是溢出按钮),点击一下溢出按钮就可以看到全部的行动按钮了。

当活动启动的时候,系统会调用活动的onCreateOptionsMenu()方法来取出所有的行动按钮,我们只需要在这个方法中去加载一个菜单资源,并把所有的行动按钮都定义在资源文件里面就可以了。

那么我们先来看下菜单资源文件该如何定义,代码如下所示:

& lt;菜单xmlns: android=癶ttp://schemas.android.com/apk/res/android"   xmlns:工具=癶ttp://schemas.android.com/tools"工具:上下文=癱om.example.actionbartest.MainActivity"比;   & lt;项目   android: id=癅 + id/action_compose"   android:图标=癅drawable/ic_action_compose"   android: showAsAction=癮lways"   android: title=癅string/action_compose"/比;   & lt;项目   android: id=癅 + id/action_delete"   android:图标=癅drawable/ic_action_delete"   android: showAsAction=癮lways"   android: title=癅string/action_delete"/比;   & lt;项目   android: id=癅 + id/action_settings"   android:图标=癅drawable/ic_launcher"   android: showAsAction=皀ever"   android: title=癅string/action_settings"/比;   & lt;/menu>

可以看的到,这里我们通过三个& lt; item>标签定义了三个动作按钮灵活;item>标签中又有一些属性,其中id是该行动按钮的唯一标识符,图标用于指定该按钮的图标,标题用于指定该按钮可能显示的文字(在图标能显示的情况下,通常不会显示文字),showAsAction则指定了该按钮显示的位置,主要有以下几种值可选:总表示永远显示在ActionBar中,如果屏幕空间不够则无法显示,ifRoom表示屏幕空间够的情况下显示在ActionBar中,不够的话就显示在溢出中,没有则表示永远显示在溢出中。

怎么在Android应用中利用ActionBar实现一个导航栏功能