Barra di spostamento Xamarin.Android
Android 4 ha introdotto una nuova funzionalità dell'interfaccia utente di sistema denominata barra di spostamento, che fornisce controlli di spostamento nei dispositivi che non includono pulsanti hardware per Home, Indietro e Menu. Lo screenshot seguente mostra la barra di spostamento da un dispositivo Nexus Prime:
Sono disponibili diversi nuovi flag che controllano la visibilità della barra di spostamento e dei relativi controlli, nonché la visibilità della barra di sistema introdotta in Android 3. I flag sono definiti nella Android.View.View
classe e sono elencati di seguito:
SystemUiFlagVisible
: rende visibile la barra di spostamento.SystemUiFlagLowProfile
: consente di estraire i controlli nella barra di spostamento.SystemUiFlagHideNavigation
: nasconde la barra di spostamento.
Questi flag possono essere applicati a qualsiasi visualizzazione nella gerarchia di visualizzazione impostando la SystemUiVisibility
proprietà . Se sono impostate più visualizzazioni, il sistema le combina con un'operazione OR e le applica finché la finestra in cui vengono impostati i flag mantiene lo stato attivo. Quando si rimuove una visualizzazione, verranno rimossi anche tutti i flag impostati.
L'esempio seguente mostra una semplice applicazione in cui facendo clic su uno dei pulsanti viene modificato SystemUiVisibility
:
Il codice per modificare l'impostazione della SystemUiVisibility
proprietà su un TextView
oggetto dal gestore eventi click di ogni pulsante, come illustrato di seguito:
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;
}
Inoltre, una SystemUiVisibility
modifica genera un SystemUiVisibilityChange
evento. Analogamente all'impostazione della SystemUiVisibility
proprietà, un gestore per l'evento SystemUiVisibilityChange
può essere registrato per qualsiasi visualizzazione nella gerarchia. Ad esempio, il codice seguente usa l'istanza TextView
per registrarsi per l'evento:
tv.SystemUiVisibilityChange +=
delegate(object sender, View.SystemUiVisibilityChangeEventArgs e) {
tv.Text = String.Format ("Visibility = {0}", e.Visibility);
};