活动条(ActionBar)是Android3.0的重要更新之一。ActionBar位于传统标题栏的位置,也就是显示屏幕的顶部。ActionBar可显示应用的图标和Activity标题——也就是前面应用的顶部显示的内容。除此之外,ActionBar的右边还可以显示活动项(Action Item)。
归纳起来,ActionBar提供了如下功能。
- 显示选项菜单的菜单项(将菜单项显示成Action Item)。
- 使用程序图标作为返回Home主键或向上的导航操作。
- 提供交互式View作为Action View。
- 提供基于Tab的导航方式,可用于切换多个Fragment。
- 提供基于下拉的导航方式。
启用ActionBar
Android3.0版本已经默认启用了ActionBar,因此只要在AndroidManifest.xml文件的SDK配置中指定了该应用的目标版本高于11(Android3.0的版本号),那么默认就会启用ActionBar。例如如下配置:
<uses-sdk android:minSdkVersion="17" />
指定该应用程序可以部署在Android4.2平台上,同时兼容Android2.3.3及更高版本。如果Android版本高于Android3.0,该应用将会启用ActionBar。
如果希望关闭ActionBar,可以设置该应用的主题为Xxx.NoActionBar,例如如下配置片段:
<application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@android:style/Theme.Holo.NoActionBar" >
上面的粗体字代码指定该应用ActionBar功能。一旦关闭了ActionBar,该Android应用将不再使用ActionBar。
实际项目中,通常推荐使用代码来控制ActionBar的显示、隐藏,ActionBar提供了如下方法来控制显示隐藏。
- show():显示ActionBar。
- hide():隐藏ActionBar。
如下实例示范了如何通过代码来控制ActionBar的显示和隐藏。
该实例的布局文件如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="showActionBar" android:text="显示ActionBar"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="hideActionBar" android:text="隐藏ActionBar"/> </LinearLayout>
该实例的Activity代码如下:
package org.crazyit.helloworld; import android.os.Bundle; import android.app.ActionBar; import android.app.Activity; import android.view.Menu; import android.view.View; public class ActionBarTest extends Activity { ActionBar actionBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.action_bar_test); //获取该Activity的ActionBar //只有当应用主题没有关闭ActionBar时,该代码才返回ActionBar actionBar=getActionBar(); } //为“显示ActionBar”按钮定义事件处理方法 public void showActionBar(View source) { //显示ActionBar actionBar.show(); } //为“隐藏ActionBar”按钮定义事件处理方法 public void hideActionBar(View source) { //隐藏ActionBar actionBar.hide(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.action_bar_test, menu); return true; } }
上面的程序中第一行粗体字代码调用了getActionBar()方法获取该Activity关联的ActionBar。接下来就可以调用ActionBar的方法来控制它的显示、隐藏。
运行上面的程序单击“隐藏ActionBar”按钮,将可以看到如图所示界面。