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:

Esempio di barra di spostamento Android

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:

Screenshot che illustrano Visible, Low Profile e Hidden 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);
  };