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:
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 SystemUiVisibility
Schaltflächen geändert werden:
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);
};