活动条(ActionBar)
活动条(ActionBar)位于传统的标题栏位置,也就是显示屏的顶部。ActionBar可显示应用的图标和Activity标题——也就是说前面应用程序的顶部显示的内容。
除此之外,ActionBar的右边还可以显示活动项(Action Item).
ActionBar功能:
- 显示选项菜单的菜单栏(将菜单项显示成Action Item)。
- 使用程序图标作为返回Home主屏或向上的导航操作。
- 提供交互式View作为Action View。
- 提供基于Tab的导航方式,可用于切换多个Fragment。
- 提供基于下拉的导航方式。
启用ActionBar
最新的Android版本已经默认启用了ActionBar,因此只要在AndroidMainfest.xml文件的SDK配置中指定该应用的目标版本高于11(Android 3.0 的版本号),默认就会启用ActionBar。
配置如下:
<user-sdk android:minSdkVersion="10"
android:targetSdkVersion="17"/>
指定该应用程序部署在Android 4.2平台上,同时兼容Android 2.3.3以及更高的版本。
如果Android版本高于3.0,该应用将会启动ActionBar。
关闭ActionBar,则将该应用主题改为Xxx.NoActionBar即可
配置如下:
<application android:icon="@drawable/ic_launcher"
android:theme="@android:style/Theme.Material.NoActionBar"
android:label="@string/app_name>
....
</application>
在实际的项目中,通常推荐使用代码来控制ActionBar的显示、隐藏。ActionBar提供了show()显示和hide()隐藏。
下面提供书上的实例:
activity_main
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.actionbar.MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="显示ActionBar"
android:onClick="showActionBar"
android:layout_marginRight="50dp"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="隐藏ActionBar"
android:onClick="hideActionBar"/>
</LinearLayout>
MainActivity.java
package com.actionbar;
import android.app.ActionBar;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends Activity {
ActionBar actionBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取该Activity的ActionBar
//只有当应用主题没有关闭ActionBar时,该代码才能返回ActionBar
actionBar = getActionBar();
}
//为"显示ActionBar"按钮定义事件处理方法
public void showActionBar(View source){
//显示ActionBar
actionBar.show();
}
//为"隐藏ActionBar"按钮定义事件处理方法
public void hideActionBar(View source){
//隐藏ActionBar
actionBar.hide();
}
}
AndroidMainfest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.actionbar">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
>
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>