Como devo seleccionar um separador programático em TabLayout?
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
Se conhecer o índice do separador que deseja seleccionar, pode fazê-lo assim:
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
TabLayout.Tab tab = tabLayout.getTabAt(someIndex);
tab.select();
Esta técnica funciona mesmo que você'esteja a utilizar o TabLayout por si só sem um ViewPager (que é atípico, e provavelmente má prática, mas eu'já o vi fazer).
Esta é provavelmente não a solução final, e exige que se utilize o TabLayout
juntamente com um ViewPager
, mas foi assim que o resolvi:
void selectPage(int pageIndex)
{
viewPager.setCurrentItem(pageIndex);
tabLayout.setupWithViewPager(viewPager);
}
Testei quão grande é o impacto do desempenho da utilização deste código, olhando primeiro para o CPU- e monitores de memória no Android Studio enquanto executava o método, depois comparando-o com a carga que foi colocada no CPU e na memória quando eu próprio naveguei entre as páginas (usando gestos de deslize), e a diferença é't significativamente grande, por isso pelo menos é'não é uma solução horrível...
Espero que isto ajude alguém!