Sdílet prostřednictvím


Navigační panel Xamarin.Android

Android 4 zavedl novou funkci uživatelského rozhraní systému označovanou jako navigační panel, který poskytuje navigační ovládací prvky na zařízeních, která neobsahují hardwarová tlačítka pro domovskou stránku, zpět a nabídku. Následující snímek obrazovky ukazuje navigační panel ze zařízení Nexus Prime:

Příklad navigačního panelu Androidu

K dispozici je několik nových příznaků, které řídí viditelnost navigačního panelu a jeho ovládacích prvků a také viditelnost systémového panelu, který byl zaveden v Androidu 3. Příznaky jsou definovány ve Android.View.View třídě a jsou uvedeny níže:

  • SystemUiFlagVisible – Zviditelní navigační panel.
  • SystemUiFlagLowProfile – Ztlumí ovládací prvky na navigačním panelu.
  • SystemUiFlagHideNavigation – Skryje navigační panel.

Tyto příznaky lze použít pro jakékoli zobrazení v hierarchii zobrazení nastavením SystemUiVisibility vlastnosti. Pokud má tato vlastnost nastaveno více zobrazení, systém je zkombinuje s operací OR a použije je tak dlouho, dokud okno, ve kterém jsou nastavené příznaky, zachová fokus. Když zobrazení odeberete, odeberou se také všechny příznaky, které je nastavené.

Následující příklad ukazuje jednoduchou aplikaci, kde kliknutím na některé z tlačítek změníte SystemUiVisibility:

Snímky obrazovky znázorňující viditelnost, nízký profil a skrytou funkci SystemUiVisibility

Kód, který změní SystemUiVisibility vlastnost na obslužné TextView rutině události kliknutí na každé tlačítko, jak je znázorněno níže:

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 Také změna vyvolá SystemUiVisibilityChange událost. Stejně jako nastavení SystemUiVisibility vlastnosti lze obslužnou rutinu události SystemUiVisibilityChange zaregistrovat pro jakékoli zobrazení v hierarchii. Následující kód například používá TextView instanci k registraci události:

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