
Jake Wharton desenvolveu uma framework para criar de forma eficaz e eficiente vários tipos de navegação via Tabs nas aplicações Android. Citei esse framework, chamado,ViewPagerIndicator, em um post anterior e o repositório está localizado em https://github.com/JakeWharton/Android-ViewPagerIndicator/. Segue um exemplo onde usei a classe TitlePageIndicator, uma das classes do framework, para criar minhas Tabs.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<LinearLayout | |
xmlns:android="http://schemas.android.com/apk/res/android" | |
android:orientation="vertical" | |
android:layout_width="match_parent" | |
android:layout_height="match_parent"> | |
<com.viewpagerindicator.TitlePageIndicator | |
android:id="@+id/indicator" | |
android:padding="10dip" | |
android:layout_height="wrap_content" | |
android:layout_width="match_parent" | |
/> | |
<android.support.v4.view.ViewPager | |
android:id="@+id/pager" | |
android:layout_width="match_parent" | |
android:layout_height="0dp" | |
android:layout_weight="1"/> | |
</LinearLayout> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ViewPager viewPager = (ViewPager) findViewById(R.id.pager); | |
TitlePageIndicator titleIndicator = (TitlePageIndicator)findViewById(R.id.indicator); | |
viewPager.setAdapter(new SeuViewPagerAdapter()); | |
viewPager.setCurrentItem(getIntent().getIntExtra(VIEWPAGER_LAST_POSITION, 0)); | |
titleIndicator.setViewPager(viewPager); |
Geralmente é preciso criar listener para o ViewPager e listener para as Tabs para que quando aconteça algo em um, reflita imediamente no outro. Sob esse aspecto há um ponto positivo. Quando ligamos o TitlePagerIndicator com o ViewPager através do método setViewPager(), isso já ocorre imediatamente.
Uma pergunta que fiz foi, “Como insiro os títulos nas abas?”. Não demorei a encontrar uma resposta no Google, o que demonstra que tem a tal biblioteca tem sido bem utilizada. O TitlePageIndicator vai exibir em cada Tab o título do Fragment correspondente no ViewPager. Então, em nosso adapter do ViewPager devemos sobrescrever o método getPageTitle() e informar lá o título de cada fragmento e que será capturado e exibido na Tab pelo TitlePageIndicator.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class SeuViewPagerAdapter extends FragmentPagerAdapter { | |
//Outros métodos | |
@Override | |
public CharSequence getPageTitle(int position) { | |
return "Titulo do fragmento de posição = position"; | |
} | |
} |