Android TabLayout选项卡文本在viewPager.setCurrentItem()之后未高亮显示
我的ViewPager上的表格布局有问题。复制步骤:Android TabLayout选项卡文本在viewPager.setCurrentItem()之后未高亮显示,android,android-viewpager,android-tablayout,Android,Android Viewpager,Android Tablayout,我的ViewPager上的表格布局有问题。复制步骤: 从第一个选项卡开始 选择第二个选项卡 按后退按钮--我的代码看到用户在第二个选项卡上,并调用viewPager.setCurrentItem(0)将用户返回到第一个选项卡 但是,如图所示,第二个选项卡文本仍处于选中状态,而第一个选项卡文本变灰。(尽管粉色条会像应该的那样返回到第一个选项卡。) 我错过了什么 tabLayout = (TabLayout) rootView.findViewById(R.id.tab_layout_main);
viewPager.setCurrentItem(0)
将用户返回到第一个选项卡李>
tabLayout = (TabLayout) rootView.findViewById(R.id.tab_layout_main);
tabLayout.addTab(tabLayout.newTab().setText(getActivity().getString(R.string.main_tab_grades)));
tabLayout.addTab(tabLayout.newTab().setText(getActivity().getString(R.string.main_tab_schedule)));
viewPager = (NonSwipeableViewPager) rootView.findViewById(R.id.pager_main);
pagerAdapter = new PagerAdapterMain(getActivity(), getChildFragmentManager(), tabLayout.getTabCount());
viewPager.setAdapter(pagerAdapter);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
return;
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
return;
}
});
您可以尝试通过tablayout而不是viewPager选择选项卡
tabLayout.getTabAt(0).select();
也许这是设计库的一个缺陷。正如问题所说: 这些代码对我很有用: //mViewPager.setCurrentItem(位置) tabLayout.getTabAt(0.getCustomView().setSelected(true);
我不认为这是TabLayout的错误,如果您想设置第一个视图高亮显示,您应该像我一样调用该方法,那么您设置的customView将无效我添加此选项可以修复此错误:
tabLayout.getTabAt(0.getCustomView().setSelected(true) 面临着独特的问题。当我们设置setCurrentItem时。它不会更改tablayout的选项卡。然后,您必须在viewpager上添加PageChangeListener,在其中,您必须为所选viewpager的位置手动选择TableLayout的选项卡。然后使用ViewPager进行设置 注意:只有在添加addOnPageChangeListener之后,才需要设置setupWithViewPager。天知道为什么。这就是成功的原因。如果我以前使用ViewPager进行过设置,则它不起作用。再一次,全能者只知道
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
viewPager.setCurrentItem(position,false);
tabLayout.getTabAt(position).select();
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
/*
NOTE: This is setup after addOnPageChangeListener. Don't know why but this is what works. Otherwise tabLayout.does not select.
*/
tabLayout.setupWithViewPager(this.viewPager);
以上都不起作用。。。最后固定设置滚动位置
tabLayout.setScrollPosition(position,0f,true);
我修复了升级到com.android的问题。支持:设计:23.4.0版本23.1.0出现问题。谢谢!我尝试调用了
viewPager.setCurrentItem(0)
和tabLayout.getTabAt(0).select()
,但都不起作用。现在我只调用后者,因为行为与预期一致。您使用的是哪个支持库版本。它对我不起作用,我也有完全相同的问题。它可能真的是关于这个版本,我使用的是com.android。支持:design:23.2.1
,在这个链接中,你可以找到一些使用Tabs@peshkira的有用提示。这对我很有用,因为我使用的是ViewPager&TabLayout。谢谢
tabLayout.setScrollPosition(position,0f,true);