Android 程式開發:(八)使用活動欄 —— 8.1 操縱ActionBar

除瞭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的顯示和隱藏。

發佈留言