Android 使用选项卡滑动视图:需要修改
我已经在Android官方网站上实现了带标签的滑动视图: 我想对此代码进行两个修改:Android 使用选项卡滑动视图:需要修改,android,android-viewpager,swipe,android-tabs,horizontal-scrolling,Android,Android Viewpager,Swipe,Android Tabs,Horizontal Scrolling,我已经在Android官方网站上实现了带标签的滑动视图: 我想对此代码进行两个修改: 顶部的选项卡栏显示三个不同的选项卡。在左上角;右上角的上一个选项卡;下一个选项卡和顶部中间;当前/选定选项卡。我想隐藏上一个和下一个选项卡。我希望它只显示当前/选定的选项卡栏 在这段代码中,每个选项卡只有一个片段。我希望选项卡2有3个水平排列的片段。我想要的是,如果我从选项卡顶部滑动,我将直接转到下一个/上一个选项卡。但是如果我在屏幕上的标签下方滑动,我应该能够在到达标签3之前滑动三次标签2。详细说明:我需要在
这是正确的方向吗?任何帮助都将不胜感激。我不理解您的第一点,但关于将多个片段分组到同一个选项卡下,您可以通过为按下的选项卡和浏览页面滑动添加自己的侦听器来实现,而不是让浏览页面执行该逻辑。以下是一个例子:
//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;
}
...
});