Android rtl viewpager with rtl tablayout

时间:2017-10-19 11:21:38

标签: android android-viewpager android-tablayout

我知道这个问题似乎有些重复,但我无法找到解决问题的好方法。我将 tablayout 与带有 fragmentPagerAdapter 的viewpager一起用作viewpager的适配器。如您所知 viewpager 不支持rtl布局,因此我在rtl语言环境中遇到问题。我希望标签从正确开始(第一个标签贴在屏幕右侧),用户可以正确滑动。我怎样才能做到这一点?有帮助吗?

3 个答案:

答案 0 :(得分:3)

好消息的家伙:)。 Android最近添加了名为 ViewPager2 的新UI组件。

https://developer.android.com/jetpack/androidx/releases/viewpager2

请在下面找到代码和链接:

dependencies {
    implementation "androidx.viewpager2:viewpager2:1.0.0"
}

先前ViewPager实现的改进:

  • RTL(从右到左)布局支持
  • 垂直方向支持
  • 可靠的Fragment支持(包括处理对基础Fragment集合的更改)
  • 数据集更改动画(包括DiffUtil支持)

下面的链接介绍了有关从ViewPager到ViewPager2的迁移指南:

https://developer.android.com/training/animation/vp2-migration

我们还有演示示例:

https://github.com/android/views-widgets-samples/tree/master/ViewPager2

答案 1 :(得分:2)

最好的解决方案是将viewpager旋转到180:

root = tree.getroot() for elem in root.iterfind(‘d/e’f’):

然后,旋转包含tablayout选项卡内容的内部视图(以反转对内容的影响)。例如,对于textview:

mViewPager.setRotationY(180); //rotate the viewpager

对于PagerTabStrip,您还应该旋转180个可见选项卡:

if (textView.getRotationY() != 180) {
    textView.setRotationY(180);
 }

在阿拉伯语应用中,这对我有用。它也适用于任何rtl语言环境。

答案 2 :(得分:0)

之前我遇到过这种情况,并且有两种解决方案

1-让我们假设您有4个片段F1,F2,F3和F4,现在您必须反向获取适配器中的所有片段,如此F4,F3,F2和F1,一旦加载片段设置选择fragment is = pager.setCurrentItem(Titles.length - 1);

并确保也反转标题。

第二种解决方案是使用自定义视图寻呼机,如

RTL view pager

希望你能处理这个