Xamarin.Android 導覽列

Android 4 引進了稱為導覽列的新系統使用者介面功能,可在不包含 [首頁]、[上一頁] 和 [功能表] 硬體按鈕的裝置上提供流覽控制件。 下列螢幕快照顯示 Nexus Prime 裝置的導覽列:

Android 導覽列的範例

有數個新的旗標可供使用,可控制導覽列及其控件的可見性,以及Android 3中引進的系統列可見度。 旗標定義於 類別中 Android.View.View ,如下所列:

  • SystemUiFlagVisible – 讓導覽列可見。
  • SystemUiFlagLowProfile – 將導覽列中的控件變暗。
  • SystemUiFlagHideNavigation – 隱藏導覽列。

這些旗標可以藉由設定 SystemUiVisibility 屬性,套用至檢視階層中的任何檢視。 如果有多個檢視已設定這個屬性,系統會將它們與 OR 作業結合,並套用它們,只要設定旗標的視窗會保留焦點。 當您移除檢視時,也會移除它設定的任何旗標。

下列範例顯示簡單的應用程式,其中按下任一按鈕會變更 SystemUiVisibility

顯示可見、低配置檔和隱藏 SystemUiVisibility 的螢幕快照

從每個按鈕的 Click 事件處理程式變更 SystemUiVisibility 上的 屬性 TextView 的程式代碼,如下所示:

var tv = FindViewById<TextView> (Resource.Id.systemUiFlagTextView);
var lowProfileButton = FindViewById<Button>(Resource.Id.lowProfileButton);
var hideNavButton = FindViewById<Button> (Resource.Id.hideNavigation);
var visibleButton = FindViewById<Button> (Resource.Id.visibleButton);

lowProfileButton.Click += delegate {
    tv.SystemUiVisibility =
        (StatusBarVisibility)View.SystemUiFlagLowProfile;
};

hideNavButton.Click += delegate {
    tv.SystemUiVisibility =
       (StatusBarVisibility)View.SystemUiFlagHideNavigation;        
};

visibleButton.Click += delegate {
    tv.SystemUiVisibility = (StatusBarVisibility)View.SystemUiFlagVisible;
}

此外, SystemUiVisibility 變更也會 SystemUiVisibilityChange 引發 事件。 就像設定 SystemUiVisibility 屬性一樣,事件處理程式 SystemUiVisibilityChange 可以註冊階層中的任何檢視。 例如,下列程式代碼會使用 TextView 實例來註冊事件:

tv.SystemUiVisibilityChange +=
  delegate(object sender, View.SystemUiVisibilityChangeEventArgs e) {
        tv.Text = String.Format ("Visibility = {0}", e.Visibility);
  };