Adicionando Tabs
A Action Bar pode mostrar tabs que permitem ao usuário navegar entre diferentes fragmentos em uma atividade. Cada tab pode incluir um título e/ou ícone.
Para começar, seu layout deve incluir uma view em que cada fragmento associado com a tab é mostrado. Esteja certo de que a View tenha um ID para ser referenciada no seu código.
Mas o que é fragmento?
De maneira rápida, já que isso será assunto para outro post, o fragmento é um pedaco de uma interface de usuário ou comportamento que pode ser colocado em uma atividade. Ou seja, se antes sua tela era composta apenas por um único XML com todas as informações, agora pode ser quebrada em vários pedaços e juntado, dando maior flexibilidade e reuso das informações.
Para adicionar Tabs na Action Bar:
1. Crie uma implementação de ActionBar.TabListener para lidar com os interações nas tabs da Action Bar. Você deve implementar todos os métodos: onTabSelected(), onTabUnselected() e onTabReselected().
Cada método de callback passa o ActionBar.Tab que recebeu o evento para um FragmentTransaction para que você possa executar a transação do fragmento (adicionar ou remover um fragmento)
private class MyTabListener implements ActionBar.TabListener {Essa implementação da ActionBar.TabListener adiciona um construtor que salva o fragmento associado com a tab para que cada callback possa adicionar ou remover o fragmento.
private TabContentFragment mFragment;
// Called to create an instance of the listener when adding a new tab
public TabListener(TabContentFragment fragment) {
mFragment = fragment;
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
ft.add(R.id.fragment_content, mFragment, null);
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
ft.remove(mFragment);
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// do nothing
}
}
2. Capture a Action Bar de sua atividade chamando o método getActionBar() durante o onCreate (mas tenha a certeza de fazê-lo apenas depois que você fez a chamada em setContentView()).
3. Chame setNavigationMode(NAVIGATION_MODE_TABS) para dispobilizar o modo de tab para a ActionBar.
4. Crie cada tab para a Action Bar.
- Crie uma nova ActionBar.Tab chamando newTab() na ActionBar()
- Adicione um título e/ou ícone para a tab chamando setText() e/ou setIcon().
Dica: Esses métodos retornam a mesma instância de ActionBar.Tab para que você possa fazer as chamadas em conjunto. - Declare a ActionBar.TabListener a ser usada na tab passando uma instância de sua implementação de setTabListener().
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// configura a Action Bar para as tabs
final ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
// Remove o título da atividade para dar espaço para as tabs
actionBar.setDisplayShowTitleEnabled(false);
// Instancia o fragmento na tab
Fragment artistsFragment = new ArtistsFragment();
// Adiciona uma nova tab e configura seu título e tab listener
actionBar.addTab(actionBar.newTab().setText(R.string.tab_artists)
.setTabListener(new TabListener(artistsFragment)));
Fragment albumsFragment = new AlbumsFragment();
actionBar.addTab(actionBar.newTab().setText(R.string.tab_albums)
.setTabListener(new TabListener(albumsFragment)));
}
Aqui está uma rápida lista de passos para disponibilizar a navegação drop-down:
- Crie um SpinnerAdapter que provê a lista de itens selecionáveis para o drop-down e o layout para usar quando desenhar cada item da lista.
- Implemente o método ActionBar.OnNavigationListener para definir o comportamento quando o usuário seleciona um item da lista.
- Faça com que o modo de navegação esteja disponível para a Action Bar com o método setNavigationMode(). Lembre-se de fazer essa chamada durante o método onCreate. Por exemplo:
ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
- Configure o callback do drop-down com setListNavigationCallbacks(). Por exemplo:
actionBar.setListNavigationCallbacks(mSpinnerAdapter, mNavigationCallback);
Permite o uso de uma imagem alternativa (a logomarca da App) na Action Bar, ao invés do ícone padrão. Uma logomarca é normalmente mais larga, com mais detalhes representando a aplicação. Quando essa opção está disponibilizada, o sistema usa a imagem de logomarca definida na aplicação dentro do arquivo de manifesto, na propriedade android:logo. A logomarca será redimensionada se necessário para se adequar à altura da Action Bar.
2 comentários:
Parabéns pelo post. Tenho uma dúvida. Como mostrar a Tab através de um botão na ActionBar?
Como chamar uma tab por um botão na ActionBar?
Postar um comentário