Partager via


Barre de navigation Xamarin.Android

Android 4 a introduit une nouvelle fonctionnalité d’interface utilisateur système appelée barre de navigation, qui fournit des contrôles de navigation sur les appareils qui n’incluent pas de boutons matériels pour accueil, retour et menu. La capture d’écran suivante montre la barre de navigation à partir d’un appareil Nexus Prime :

Exemple de barre de navigation Android

Plusieurs nouveaux indicateurs sont disponibles qui contrôlent la visibilité de la barre de navigation et de ses contrôles, ainsi que la visibilité de la barre système introduite dans Android 3. Les indicateurs sont définis dans la Android.View.View classe et sont répertoriés ci-dessous :

  • SystemUiFlagVisible : rend la barre de navigation visible.
  • SystemUiFlagLowProfile : désactive les contrôles dans la barre de navigation.
  • SystemUiFlagHideNavigation : masque la barre de navigation.

Ces indicateurs peuvent être appliqués à n’importe quelle vue de la hiérarchie d’affichage en définissant la SystemUiVisibility propriété. Si plusieurs vues ont ce jeu de propriétés, le système les combine avec une opération OR et les applique tant que la fenêtre dans laquelle les indicateurs sont définis conserve le focus. Lorsque vous supprimez une vue, tous les indicateurs qu’il a définis sont également supprimés.

L’exemple suivant montre une application simple où cliquer sur l’un des boutons modifie les SystemUiVisibilityéléments suivants :

Captures d’écran montrant Visible, Low Profile et Hidden SystemUiVisibility

Code permettant de modifier la SystemUiVisibility propriété sur un TextView gestionnaire d’événements click de chaque bouton, comme indiqué ci-dessous :

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

En outre, une SystemUiVisibility modification déclenche un SystemUiVisibilityChange événement. Tout comme la définition de la SystemUiVisibility propriété, un gestionnaire pour l’événement SystemUiVisibilityChange peut être inscrit pour n’importe quelle vue de la hiérarchie. Par exemple, le code ci-dessous utilise l’instance TextView pour s’inscrire à l’événement :

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