Udostępnij za pośrednictwem


Pasek nawigacyjny platformy Xamarin.Android

System Android 4 wprowadził nową funkcję interfejsu użytkownika systemu o nazwie Pasek nawigacyjny, który zapewnia kontrolki nawigacji na urządzeniach, które nie zawierają przycisków sprzętowych dla strony głównej, wstecz i menu. Poniższy zrzut ekranu przedstawia pasek nawigacyjny z urządzenia Nexus Prime:

Przykład paska nawigacyjnego systemu Android

Dostępnych jest kilka nowych flag, które kontrolują widoczność paska nawigacyjnego i jego kontrolek, a także widoczność paska systemowego wprowadzonego w systemie Android 3. Flagi są zdefiniowane w Android.View.View klasie i są wymienione poniżej:

  • SystemUiFlagVisible — powoduje, że pasek nawigacyjny jest widoczny.
  • SystemUiFlagLowProfile — Przyciemnia kontrolki na pasku nawigacyjnym.
  • SystemUiFlagHideNavigation — ukrywa pasek nawigacyjny.

Te flagi można zastosować do dowolnego widoku w hierarchii widoków, ustawiając SystemUiVisibility właściwość . Jeśli wiele widoków ma ten zestaw właściwości, system łączy je z operacją OR i stosuje je tak długo, jak okno, w którym ustawiono flagi zachowuje fokus. Po usunięciu widoku wszystkie flagi ustawione również zostaną usunięte.

W poniższym przykładzie pokazano prostą aplikację, w której kliknięcie dowolnego przycisku spowoduje zmianę elementu SystemUiVisibility:

Zrzuty ekranu przedstawiające widoczny, niski profil i ukryty systemUiVisibility

Kod umożliwiający zmianę SystemUiVisibility właściwości w TextView programie obsługi zdarzeń kliknięcia każdego przycisku, jak pokazano poniżej:

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 Ponadto zmiana powoduje wywołanie SystemUiVisibilityChange zdarzenia. Podobnie jak ustawienie SystemUiVisibility właściwości, program obsługi zdarzenia można zarejestrować dla SystemUiVisibilityChange dowolnego widoku w hierarchii. Na przykład poniższy kod używa TextView wystąpienia do zarejestrowania się na potrzeby zdarzenia:

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