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