我已经使用Android官方网站http://developer.android.com/training/implementing-navigation/lateral.html
实现了带选项卡的滑动视图我想对此代码进行两处修改:
顶部的标签栏显示三个不同的标签。在左上角;上一个标签,在右上角;下一个标签位于中间;当前/选定的标签。我想隐藏上一个和下一个标签。我希望它只显示当前/选定的标签栏。
在此代码中,每个选项卡只有一个片段。我希望Tab 2有3个水平排列的片段。我想要的是,如果我从标签上方的顶部向上滑动,我将直接转到下一个/上一个标签。但是如果我在屏幕上滑动,在标签下面,我应该能够在第二个标签之前滑动三次,然后才能到达标签3.详细说明:我需要在每个片段中水平滚动列表视图。
< / LI> 醇>这是正确的方向吗?任何帮助将不胜感激。
答案 0 :(得分:0)
我没有理解你的第一点,但是关于在同一个标签下分组几个片段,你可以通过为按下的标签添加你自己的监听器和viewPager swipe来实现它,而不是让视图Pager实现那个逻辑。这是一个例子:
//setup tabs
mTabLayout = (TabLayout) findViewById(R.id.tabs);
mTabLayout.addTab(mTabLayout.newTab("Prev"));
mTabLayout.addTab(mTabLayout.newTab("Current"));
mTabLayout.addTab(mTabLayout.newTab("Next"));
//Listen for pressed tabs
mTabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
if (mDissableTabListener) {
return;
}
if (tab.getPosition() == 0) {
//go to first position
mViewPager.setCurrentItem(0);
} else if (tab.getPosition() == 1){
//i.e: go to your first tab at the center
,ViewPager.setCurrentItem(1);
} else if (tab.getPosition() == 2) {
//go to last position
if (mViewPager.getCurrentItem() == mViewPager.getAdapter().getCount() -1) {
//we are in the last tab, so move to first position
mViewPager.setCurrentItem(0);
}
}
}
...
});
//Now use a OnViewPagerListener to change selected tab when there is a swipe
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
//avoid the TabSelectedMethod to be called (it would change the viewPager current item)
mDissableTabListener = true;
if (position == mViewPager.getAdapter().getCount() -1){
//When swipe to last
mTabLayout.getTabAt(2).select();
} else if (position == 0){
//select first tab
mTabLayout.getTabAt(0).select();
} else {
//select center tab
mTabLayout.getTabAt(1).select();
}
mDissableTabListener = false;
}
...
});