Xamarin.Android-Navigationsleiste
Mit Android 4 wurde eine neue Systembenutzeroberfläche namens Navigationsleiste eingeführt, die Navigationssteuerelemente auf Geräten ohne Hardwareschaltflächen für Start, Zurück und Menü bereitstellt. Der folgende Screenshot zeigt die Navigationsleiste eines Nexus Prime-Geräts:
Es sind mehrere neue Flags verfügbar, die die Sichtbarkeit der Navigationsleiste und ihrer Steuerelemente sowie die Sichtbarkeit der Systemleiste steuern, die in Android 3 eingeführt wurde. Die Flags sind in der Android.View.View
-Klasse definiert und werden unten aufgeführt:
SystemUiFlagVisible
– Macht die Navigationsleiste sichtbar.SystemUiFlagLowProfile
– Blendet Steuerelemente in der Navigationsleiste aus.SystemUiFlagHideNavigation
– Blendet die Navigationsleiste aus.
Diese Flags können auf jede Ansicht in der Ansichtshierarchie angewendet werden, indem die SystemUiVisibility
-Eigenschaft festgelegt wird. Wenn diese Eigenschaft für mehrere Ansichten festgelegt ist, 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 auch alle von ihr festgelegten Flags entfernt.
Das folgende Beispiel zeigt eine einfache Anwendung, bei der durch Klicken auf eine der Schaltflächen die geändert wird SystemUiVisibility
:
Der Code zum Ändern der SystemUiVisibility
legt die -Eigenschaft für einen TextView
aus dem Klickereignishandler jeder Schaltfläche fest, wie unten gezeigt:
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 -Ereignis aus SystemUiVisibilityChange
. Genau wie das 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 beispielsweise die TextView
instance, um sich für das Ereignis zu registrieren:
tv.SystemUiVisibilityChange +=
delegate(object sender, View.SystemUiVisibilityChangeEventArgs e) {
tv.Text = String.Format ("Visibility = {0}", e.Visibility);
};