Programação em Android: Action Bar
Neste post será apresentado o conceito de Action Bar em Android.
A Action Bar é um componente visual que se localiza no topo da Activity, e que mostra seu título, modos de navegação e outros itens interativos.
Por padrão, a Action Bar mostra o ícone do aplicativo na esquerda, seguido pelo título da atividade. Se sua Activity possuir um Options Menu, podemos criar alguns itens acessíveis diretamente da Action Bar, chamados de "action items". Também podemos modificar diversas características da Action Bar ou removê-los completamente.
Em uma Activity, podemos recuperar uma instância da Action Bar chamando o método getActionBar() ou getSupportActionBar(). Por que temos estas duas opções, e não apenas uma? Porque, nativamente, a Action Bar só funciona a partir da API 11. Porém, existem bibliotecas de compatibilidade que possibilitam que API's inferiores à 11 também utilizem Action Bar. Neste caso, o método utilizado é o getSupportActionBar().
Action Bar visualmente
Abaixo temos uma breve demonstração de como é uma Action Bar:
· [1] Ícone da aplicação (sem opção "Up").
· [2] Action Items (neste caso, de "Pesquisa" e "Google Play").
· [3] O PopUp Menu, melhor conhecido (na literatura de Action Bar) como Action Overflow.
Com uma Action Bar, temos um espaço dedicado à dar a nossa aplicação uma identidade, indicar um guia, um ponto de partida ao usuário. Com ela, ações importantes são facilmente acessíveis (como a Pesquisa), e também diversos tipos de modos de navegação (como Tab's e listas de Drop-Down).
Botão "Up"
Podemos habilitar o ícone do nosso aplicativo como um botão "Up", que permite ao usuário navegar pelo aplicativo através da hierarquia de ordem de chamadas de cada tela. Por exemplo, se a tela A mostra uma lista de itens, e selecionando um item vamos à tela B, então a tela B deve possuir um botão "Up" que quando clicado retornará o fluxo da aplicação para a tela A.
No entanto, este botão é diferente do botão físico "Back". O botão "Back" é usado para navegar em ordem cronológica inversa através do histórico de telas que o usuário trabalhou recentemente, e é geralmente baseada nos relacionamentos temporais entre as telas, diferentemente do botão "Up", que se baseia na estrutura hierárquica do aplicativo (que é a base da navegação deste botão).
Abaixo temos o botão "Up" para o aplicativo Gmail:
Para habilitar o botão "Up", devemos utilizar o método setDisplayHomeAsUpEnabled().
Como exemplo de Action View, usaremos o botão a funcionalidade "Search".
Uma Action View é um widget que aparece na Action Bar como um substituto para um Action Button.
Uma Action View possibilita acesso rápido à diversas opções sem que precisemos trocar de telas ou fragmentos, e sem deslocar as estrutura de uma Action Bar. Por exemplo, se temos uma ação de Pesquisa, podemos adicionar uma Action View para anexar uma caixa de pesquisa na Action Bar, como mostrado abaixo.
Para configurar uma Action View, podemos fazer isto através do método onCreateOptionsMenu(). O objeto da Action View pode ser obtido chamando-se o método MenuItemCompat.getActionView() e passando como argumento um respectivo MenuItem. Por exemplo, a caixa de pesquisa do exemplo acima pode ser obtido através do código abaixo.
Uma Action Bar fornece acesso aos mais importantes Action Items relativos à um aplicativo. Estes aparecem diretamente na Action Bar com um ícone e/ou um texto, e também conhecidos como Action Buttons. As ações que não cabem na Action Bar são escondidas no chamado Action Overflow (tal qual mencionado na seção 4.2.1). O usuário, ao clicar no botão de Overflow (no lado direito da Action Bar), revela uma lista de outras opções de Action Items.
Quando uma Activity começa, a aplicação popula os Action Items através do método onCreateOptionsMenu(). Este método pode ser usado para inflar um menu que define todos os Action Items. Por exemplo, abaixo temos um menu definindo alguns itens de menu (situado em algum arquivo XML da pasta res/menu).
Como mencionado acima, a Activity conversa com este menu através do método onCreateOptionsMenu().
Podemos requisitar que um item específico apareça na Action Bar como um Action Button. Isto é feito através da propriedade showAsAction="ifRoom" da tag <item> do XML de menu, tal qual mostrado abaixo.
Se não há espaço suficiente para o item na Action Bar, ele aparecerá no Action Overflow.
É aconselhável definir sempre o título de cada item mesmo que não esteja explicitamente declarado que o título apareça com o Action Item, pelas seguintes razões:
· Se não houver espaço suficiente na Action Bar para o Action Item, o item de aparecerá no Overflow onde apenas o título aparecer.
· Leitores de tela para deficientes visuais leêm o título do Action Item.
· Se o Action Item aparece apenas com o ícone, um usuário poderá realizar uma ação de longo-clique neste item para mostrar uma "dica" que mostra o título do item.
O ícone é opcional, mas recomendado.
Quando o usuário escolhe uma ação, a aplicação Android chama o método onOptionsItemSelected().
Usando o MenuItem passado para este método, podemos identificar a ação chamando o getItemId(). Este método returna um identificador único através da propriedade <item> do menu. Assim, podemos realizar a ação requisitada. Por exemplo: