在viewPager.setCurrentItem()之后,TabLayout选项卡文本未突出显示

NSo*_*uth 5 android android-viewpager android-tablayout

我的ViewLager附带的TabLayout存在问题.Repro步骤:

  1. 从第一个选项卡开始.
  2. 选择第二个选项卡.
  3. 按后退按钮 - 我的代码看到用户在第二个选项卡上并调用viewPager.setCurrentItem(0)以将用户返回到第一个选项卡.
  4. 但是,如图所示,第一个选项卡文本显示为灰色时,仍然会选择第二个选项卡文本.(虽然粉红色条会像它应该的那样回到第一个标签.)

在此输入图像描述

我错过了什么?

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;
    }
});
Run Code Online (Sandbox Code Playgroud)

Bin*_*Sun 7

也许这是设计库的错误.正如问题所述:https: //code.google.com/p/android/issues/detail?id = 192834

这些代码对我有用:

// mViewPager.setCurrentItem(position);

mTabLayout.getTabAt(position).select();
Run Code Online (Sandbox Code Playgroud)


小智 5

您可以尝试通过tablayout而不是viewPager选择选项卡.

tabLayout.getTabAt(0).select();
Run Code Online (Sandbox Code Playgroud)