Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android TabLayout选项卡文本在viewPager.setCurrentItem()之后未高亮显示_Android_Android Viewpager_Android Tablayout - Fatal编程技术网

Android TabLayout选项卡文本在viewPager.setCurrentItem()之后未高亮显示

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上的表格布局有问题。复制步骤:

  • 从第一个选项卡开始
  • 选择第二个选项卡
  • 按后退按钮--我的代码看到用户在第二个选项卡上,并调用
    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);