TabLayout+ViewPager点击Tab跳转不相邻界面不显示中途界面的方法

我们知道TabLayout+ViewPager可以实现多界面切换,一般我们会用下面的这种实现方式。

TabViewPagerAdapter viewPagerAdapter = new TabViewPagerAdapter(getChildFragmentManager());
        for (String title : titles) {
            viewPagerAdapter.addTitles(title);
        }
        viewPagerAdapter.addFragment(new TestOneFragment());
        viewPagerAdapter.addFragment(new TestTwoFragment());
        viewPagerAdapter.addFragment(new TestThreeFragment());
        viewPagerAdapter.addFragment(new TestFourFragment());

        mVp_Fragment.setOffscreenPageLimit(4);
        mVp_Fragment.setAdapter(viewPagerAdapter);
        mVp_Fragment.setPageTransformer(true, MyTransformer.getMyTransformer(TransType.OVERLAP));
        mTbl_Fragment.setupWithViewPager(mVp_Fragment);

但是比如你想从第一个界面点击第四Tab切换到第四个界面的时候,会出现有第二、第三界面的过程动画。这是ViewPager默认的切换方式,这时候如果你不想要这种效果,可以使用ViewPager.setCurrentItem(position,false);方法传入false来禁止这种动画效果。但是上面的方法是用关联的方式,无法使用setCurrentItem这个方法。

想要继续使用setCurrentItem方法可以使用TabLayout点击事件的方式来实现,代码如下:

mTbl_Fragment.addTab(mTbl_Title.newTab().setText(titles[0]));
        mTbl_Fragment.addTab(mTbl_Title.newTab().setText(titles[1]));
        mTbl_Fragment.addTab(mTbl_Title.newTab().setText(titles[2]));
        mTbl_Fragment.addTab(mTbl_Title.newTab().setText(titles[3]));
        mTbl_Fragment.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                switch (tab.getPosition()){
                    case 0:
                        mVp_Fragment.setCurrentItem(tab.getPosition(),false);
                        break;
                    case 1:
                        mVp_Fragment.setCurrentItem(tab.getPosition(),false);
                        break;
                    case 2:
                        mVp_Fragment.setCurrentItem(tab.getPosition(),false);
                        break;
                    case 3:
                        mVp_Fragment.setCurrentItem(tab.getPosition(),false);
                        break;
                }
            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {

            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {

            }
        });

        MyViewPagerAdapter viewPagerAdapter = new MyViewPagerAdapter(getChildFragmentManager());
        viewPagerAdapter.addFragment(new TestOneFragment());
        viewPagerAdapter.addFragment(new TestTwoFragment());
        viewPagerAdapter.addFragment(new TestThreeFragment());
        viewPagerAdapter.addFragment(new TestFourFragment());

        mVp_Fragment.setCurrentItem(0);
        mVp_Fragment.setOffscreenPageLimit(4);
        mVp_Fragment.setAdapter(viewPagerAdapter);
        mVp_Fragment.setScroll(false);

你可能感兴趣的:(TabLayout+ViewPager点击Tab跳转不相邻界面不显示中途界面的方法)