Compartilhar via


Barra de navegação Xamarin.Android

O Android 4 introduziu um novo recurso de interface do usuário do sistema chamado Barra de Navegação, que fornece controles de navegação em dispositivos que não incluem botões de hardware para Home, Back e Menu. A captura de tela a seguir mostra a Barra de Navegação de um dispositivo Nexus Prime:

Exemplo de uma barra de navegação do Android

Vários novos sinalizadores estão disponíveis que controlam a visibilidade da Barra de Navegação e seus controles, bem como a visibilidade da Barra do Sistema que foi introduzida no Android 3. As bandeiras são definidas na Android.View.View classe e estão listadas abaixo:

  • SystemUiFlagVisible – Torna a Barra de Navegação visível.
  • SystemUiFlagLowProfile – Escurece os controles na barra de navegação.
  • SystemUiFlagHideNavigation – Oculta a barra de navegação.

Esses sinalizadores podem ser aplicados a qualquer modo de exibição na hierarquia de exibição definindo a SystemUiVisibility propriedade. Se vários modos de exibição tiverem esse conjunto de propriedades, o sistema os combinará com uma operação OR e os aplicará desde que a janela na qual os sinalizadores são definidos mantenha o foco. Quando você remove um modo de exibição, todos os sinalizadores definidos por ele também serão removidos.

O exemplo a seguir mostra um aplicativo simples em que clicar em qualquer um dos botões altera o SystemUiVisibility:

Capturas de tela demonstrando Visible, Low Profile, e Hidden SystemUiVisibility

O código para alterar o SystemUiVisibility define a propriedade em um TextView manipulador de eventos de clique de cada botão, conforme mostrado abaixo:

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

Além disso, uma SystemUiVisibility mudança gera um SystemUiVisibilityChange evento. Assim como definir a SystemUiVisibility propriedade, um manipulador para o SystemUiVisibilityChange evento pode ser registrado para qualquer modo de exibição na hierarquia. Por exemplo, o código abaixo usa a TextView instância para registrar o evento:

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