Android 带有 rtl tablayout 的 rtl viewpager

Android rtl viewpager with rtl tablayout

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

我遇到过这种情况,有2种解决方法

1- 假设您有 4 个片段 F1、F2、F3 和 F4,一旦您加载了片段集,现在您必须像 F4、F3、F2 和 F1 那样反向获取适配器中的所有片段select 片段是 = pager.setCurrentItem(Titles.length - 1);

并确保也颠倒标题。

第二种解决方案是使用像

这样的自定义视图寻呼机

RTL view pager

希望你处理好这个

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

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

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

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

对于 PagerTabStrip,您还应该将 3 个可见标签旋转 180 度:

PagerTabStrip pt= container.findViewById(R.id.pager_tab_strip);
 pt.getChildAt(0).setRotationY(180);
 pt.getChildAt(1).setRotationY(180);
 pt.getChildAt(2).setRotationY(180);

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

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

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

请在下面找到代码和 links :

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

对之前 ViewPager 实现的改进:

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

下面link解释了从 ViewPager 到 ViewPager2 的迁移指南:

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

我们还有演示示例:

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