ViewPagerIndicator

by Paco Pomet / from beautifuldecay.com

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.


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

view raw

layout.xml

hosted with ❤ by GitHub

O código Java é tão simples quanto. Crie um ViewPager normalmente, e informe a instância do TitlePageIndicator qual o ViewPager ele estará associado.


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.


public class SeuViewPagerAdapter extends FragmentPagerAdapter {
//Outros métodos
@Override
public CharSequence getPageTitle(int position) {
return "Titulo do fragmento de posição = position";
}
}

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s