【发布时间】:2015-12-03 07:09:14
【问题描述】:
我正在使用 TabLayout 和 viewPager 以及向左或向右滑动 viewPager 以在页面之间导航的选项。
我的问题是,我的应用程序是基于 RTL 的(从右到左)并且滑动方向是相反的。
我正在尝试将滑动方向从默认更改为反向版本。 我在网上搜索了很多,但找不到方法。
我正在使用android.support.v4.view.ViewPager;
这就是我使用 viewPager 初始化 TabLayout 的方式:
// View Page Adapter
final ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
final PagerAdapter adapter = new PagerAdapter
(getSupportFragmentManager(), tabLayout.getTabCount());
//View Page Adapter Configuration
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
viewPager.setOffscreenPageLimit(3);
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
总结:目前,当我向左滑动 viewPager 时,它会显示下一页。 在 RTL 中,当您向右滑动 viewPager 时,它会显示下一页。
这可能很难理解,但就是这样。 向右滑动显示下一页
而我需要向右滑动才能显示上一页。
【问题讨论】:
-
这不只是将
PagerAdapter的内容倒序排列的问题吗? -
为什么不将当前项目设置为最后一项?
-
@CommonsWare 当我向左滑动时会发生什么?我不需要为此更改 onScrollListener 吗? (克里斯的回答相同)我需要更改 viewPager 滚动方向(向右滑动 - 下一页,向左滑动 - 上一页)。现在它颠倒了。如果我选择一个,这些选项卡效果很好。 viewPager 滑动不会。
-
"当我向左滑动时会发生什么?" - 向左滑动时通常会发生什么。根据您的编辑,反转
PagerAdapter的内容似乎是您想要的。ViewPager中确实没有“下一页”或“上一页”的概念,因为它只关心页面索引值。由您来订购PagerAdapter的内容,以便“下一页”表示您想要的内容。这也可能意味着您需要根据 Chris 的评论在末尾设置起始页索引,具体取决于您希望起始状态是什么。 -
@CommonsWare 我想你误解了我的问题,或者我没有解释我需要什么好的。我用新信息编辑了我给你的评论答案,希望你能理解。
标签: android android-viewpager android-tablayout