除瞭fragments(碎片),在Android3和4中新增加的特性,還有ActionBar(活動欄)。ActionBar位於傳統標題欄的位置,就在設備屏幕的頂部。ActionBar顯示瞭應用的圖標和Activity的標題。可選擇地,ActionBar的右側是那些action items(活動項目)。下圖展示瞭build-in(內置的)Email應用,顯示瞭應用的圖標,Activity(活動)的標題,以及一些活動項目。下一節將詳細地討論action items(活動項目)。
下面的例子,將會介紹如何通過編寫代碼去隱藏和顯示ActionBar。
1、創建一個工程,MyActionBar。
2、按F11在模擬器上面調試。此時,你就會看見ActionBar被放置在瞭屏幕的頂端(包含應用的圖標和應用的名稱“MyActionBar”)。如下圖。
3、想要隱藏ActionBar,可以在AndroidManifest.xml中加入以下代碼。
[html]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.learn2develop.MyActionBar"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="13" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".MyActionBarActivity"
<!– 註意這行代碼 –>
android:theme="@android:style/Theme.Holo.NoActionBar">
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
4、按F11重新調試,就會看見,這次ActionBar就不會顯示瞭。
5、也可以通過編寫代碼的方式去移除ActionBar,但這要使用ActionBar類。如果想這麼做的話,首先就得把AndroidManifest.xml中的android:theme屬性去掉,否則,將會引起一個Exception(異常)。
6、在MyActionBar.java文件中加入如下代碼。
[java]
public class MyActionBarActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 獲取ActionBar實例
ActionBar actionBar = getActionBar();
// 隱藏
actionBar.hide();
// 顯示
//actionBar.show();
}
}
7、按F11重新調試,發現ActionBa依然是隱藏的,但是此時AndroidManifest.xml中的android:theme屬性已經被刪除瞭。
註意:
如果在AndroidManifest.xml中定義瞭主題,把ActionBar給隱藏瞭。在程序運行時,如果執行getActionBar()方法,就會返回一個null。所以,一般情況下,總是通過編寫代碼的方式去控制ActionBar的顯示和隱藏。