在编程支持TabLayout库设置选项卡指示器位置 [英] Set tab indicator position programatically in TabLayout support library
本文介绍了在编程支持TabLayout库设置选项卡指示器位置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在我的应用我使用TabLayout从支持库视图pager.I有3个片段it.Suppose我在弗拉加其中有一个按钮,点击就带我到fragB.I我成功地将fragB,但唯一的问题是选项卡指示器保持在弗拉加。
code
私人无效setupTablayout(){
tabLayout =(TabLayout)findViewById(R.id.tabLayout);
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
tabLayout.setupWithViewPager(viewPager);
viewPager.setCurrentItem(1,真); tabLayout.getTabAt(0).setIcon(R.drawable.archive).setText();
tabLayout.getTabAt(1).setIcon(R.drawable.status_1).setText();
tabLayout.getTabAt(2).setIcon(R.drawable.settings).setText(); tvHeader.setText(STATUS); tabLayout.setOnTabSelectedListener(本);
//tabLayout.setOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager));
} @覆盖
公共无效onTabSelected(TabLayout.Tab标签){ viewPager.setCurrentItem(tab.getPosition());
开关(tab.getPosition()){
情况下0: tab.setIcon(R.drawable.archive_1).setText();
tvHeader.setText(档案);
tvDate.setVisibility(View.GONE);
ivRefresh.setVisibility(View.VISIBLE); 打破;
情况1:
tab.setIcon(R.drawable.status_1).setText();
tvHeader.setText(STATUS);
tvDate.setVisibility(View.VISIBLE);
ivRefresh.setVisibility(View.VISIBLE);
打破;
案例2:
tab.setIcon(R.drawable.settings_1).setText();
tvHeader.setText(设置);
tvDate.setVisibility(View.GONE);
ivRefresh.setVisibility(View.GONE);
打破;
}
} @覆盖
公共无效onTabUnselected(TabLayout.Tab标签){
viewPager.setCurrentItem(tab.getPosition());
开关(tab.getPosition()){
情况下0: tab.setIcon(R.drawable.archive).setText(); 打破;
情况1:
tab.setIcon(R.drawable.status).setText();
打破;
案例2:
tab.setIcon(R.drawable.settings).setText();
打破;
} }
@覆盖
公共无效onTabReselected(TabLayout.Tab标签){ viewPager.setCurrentItem(tab.getPosition());
开关(tab.getPosition()){
情况下0: tab.setIcon(R.drawable.archive).setText(); 打破;
情况1:
tab.setIcon(R.drawable.status).setText(); 打破;
案例2:
tab.setIcon(R.drawable.settings).setText();
打破;
} } 类MyPagerAdapter扩展FragmentPagerAdapter {
公共MyPagerAdapter(FragmentManager经理){
超(经理);
} @覆盖
公共片段的getItem(INT位置){ 片段片段= NULL; 开关(位置){
情况下0:// tabLayout.getTabAt(0).setIcon(R.drawable.archive_1).setText();
// tabLayout.getTabAt(1).setIcon(R.drawable.status).setText();
// tabLayout.getTabAt(2).setIcon(R.drawable.settings).setText();
片段=新ArchivesFrag();
打破;
情况1:
// tabLayout.getTabAt(0).setIcon(R.drawable.archive).setText();
// tabLayout.getTabAt(1).setIcon(R.drawable.status_1).setText();
// tabLayout.getTabAt(2).setIcon(R.drawable.settings).setText();
片段= StatusFrag.newInstance(listPosition); 打破;
案例2:
// tabLayout.getTabAt(0).setIcon(R.drawable.archive).setText();
// tabLayout.getTabAt(1).setIcon(R.drawable.status).setText();
// tabLayout.getTabAt(2).setIcon(R.drawable.settings_1).setText();
片段=新SettingFrag(); 打破;
}
返回片段;
} @覆盖
公众诠释的getCount(){
返回3;
}
}
弗拉加
{ ((首页)getActivity())getArchiveList();
}
解决方案
而不是
viewPager.setCurrentItem(tab.getPosition());
您可以使用,
tab.select();
In my application i am using TabLayout from support library with view pager.I have 3 fragments in it.Suppose i am in fragA which has a button which on clicked takes me to fragB.I am sucessfully going to fragB but only problem is that the tab indicator remains at fragA.
Code
private void setupTablayout() {
tabLayout = (TabLayout) findViewById(R.id.tabLayout);
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
tabLayout.setupWithViewPager(viewPager);
viewPager.setCurrentItem(1, true);
tabLayout.getTabAt(0).setIcon(R.drawable.archive).setText("");
tabLayout.getTabAt(1).setIcon(R.drawable.status_1).setText("");
tabLayout.getTabAt(2).setIcon(R.drawable.settings).setText("");
tvHeader.setText("STATUS");
tabLayout.setOnTabSelectedListener(this);
//tabLayout.setOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager));
}
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
switch (tab.getPosition()) {
case 0:
tab.setIcon(R.drawable.archive_1).setText("");
tvHeader.setText("ARCHIVES");
tvDate.setVisibility(View.GONE);
ivRefresh.setVisibility(View.VISIBLE);
break;
case 1:
tab.setIcon(R.drawable.status_1).setText("");
tvHeader.setText("STATUS");
tvDate.setVisibility(View.VISIBLE);
ivRefresh.setVisibility(View.VISIBLE);
break;
case 2:
tab.setIcon(R.drawable.settings_1).setText("");
tvHeader.setText("SETTINGS");
tvDate.setVisibility(View.GONE);
ivRefresh.setVisibility(View.GONE);
break;
}
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
switch (tab.getPosition()) {
case 0:
tab.setIcon(R.drawable.archive).setText("");
break;
case 1:
tab.setIcon(R.drawable.status).setText("");
break;
case 2:
tab.setIcon(R.drawable.settings).setText("");
break;
}
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
switch (tab.getPosition()) {
case 0:
tab.setIcon(R.drawable.archive).setText("");
break;
case 1:
tab.setIcon(R.drawable.status).setText("");
break;
case 2:
tab.setIcon(R.drawable.settings).setText("");
break;
}
}
class MyPagerAdapter extends FragmentPagerAdapter {
public MyPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
Fragment fragment = null;
switch (position) {
case 0:
// tabLayout.getTabAt(0).setIcon(R.drawable.archive_1).setText("");
// tabLayout.getTabAt(1).setIcon(R.drawable.status).setText("");
// tabLayout.getTabAt(2).setIcon(R.drawable.settings).setText("");
fragment = new ArchivesFrag();
break;
case 1:
// tabLayout.getTabAt(0).setIcon(R.drawable.archive).setText("");
// tabLayout.getTabAt(1).setIcon(R.drawable.status_1).setText("");
// tabLayout.getTabAt(2).setIcon(R.drawable.settings).setText("");
fragment = StatusFrag.newInstance(listPosition);
break;
case 2:
// tabLayout.getTabAt(0).setIcon(R.drawable.archive).setText("");
// tabLayout.getTabAt(1).setIcon(R.drawable.status).setText("");
// tabLayout.getTabAt(2).setIcon(R.drawable.settings_1).setText("");
fragment = new SettingFrag();
break;
}
return fragment;
}
@Override
public int getCount() {
return 3;
}
}
FragA
{
((Home) getActivity()).getArchiveList();
}
解决方案
Instead of
viewPager.setCurrentItem(tab.getPosition());
You can use,
tab.select();
这篇关于在编程支持TabLayout库设置选项卡指示器位置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文