Freigeben über


Xamarin.Android Navigationsleiste

Android 4 hat ein neues Systembenutzeroberflächenfeature namens Navigationsleiste eingeführt, das Navigationssteuerelemente auf Geräten bereitstellt, die keine Hardwareschaltflächen für "Start", "Zurück" und "Menü" enthalten. Der folgende Screenshot zeigt die Navigationsleiste von einem Nexus Prime-Gerät:

Beispiel für eine Android-Navigationsleiste

Es stehen mehrere neue Flags zur Verfügung, die die Sichtbarkeit der Navigationsleiste und der zugehörigen Steuerelemente sowie die Sichtbarkeit der In Android 3 eingeführten Systemleiste steuern. Die Flags werden in der Android.View.View Klasse definiert und nachfolgend aufgeführt:

  • SystemUiFlagVisible – Macht die Navigationsleiste sichtbar.
  • SystemUiFlagLowProfile – Ausgeblendete Steuerelemente in der Navigationsleiste.
  • SystemUiFlagHideNavigation – Blendet die Navigationsleiste aus.

Diese Flags können auf jede Ansicht in der Ansichtshierarchie angewendet werden, indem Sie die SystemUiVisibility Eigenschaft festlegen. Wenn mehrere Ansichten diesen Eigenschaftensatz aufweisen, kombiniert das System sie mit einem OR-Vorgang und wendet sie an, solange das Fenster, in dem die Flags festgelegt sind, den Fokus behält. Wenn Sie eine Ansicht entfernen, werden alle kennzeichen, die sie festgelegt hat, ebenfalls entfernt.

Das folgende Beispiel zeigt eine einfache Anwendung, bei der durch Klicken auf eine der Schaltflächen die SystemUiVisibilitySchaltflächen geändert werden:

Screenshots, die visible, Low Profile und Hidden SystemUiVisibility zeigen

Der Code zum Ändern der SystemUiVisibility Eigenschaft auf einem TextView Klickereignishandler der einzelnen Schaltflächen wie unten dargestellt:

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;
}

Außerdem löst eine SystemUiVisibility Änderung ein SystemUiVisibilityChange Ereignis aus. Genau wie beim Festlegen der SystemUiVisibility Eigenschaft kann ein Handler für das SystemUiVisibilityChange Ereignis für jede Ansicht in der Hierarchie registriert werden. Der folgende Code verwendet z. B. die TextView Instanz, um sich für das Ereignis zu registrieren:

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