Android - 如何从右到左制作视图寻呼机?

时间:2014-06-08 13:16:38

标签: android-viewpager right-to-left

我正在使用这个库:https://github.com/astuetz/PagerSlidingTabStrip并且它完美无缺,除了我想要添加另一种阿拉伯语语言,所以我希望标签能够刷RTL并且每个东西都会以相反的顺序。

我尝试将标签的Gravity设置为右边,但它不起作用..我也看到了这个库:https://github.com/dreamlearn/viewpager

但我不知道如何使用它..请提前帮助和感谢

2 个答案:

答案 0 :(得分:0)

您需要做的是颠倒片段的顺序 (将它们初始化为ViewPager时)并执行viewPager.setCurrentItem(ViewPagerSize)。 但是只有当语言环境是RTL时才必须发生,因此你必须使用一种方法来确定它是否正确。

这是代码:

 public static boolean isRTL() {
    return isRTL(Locale.getDefault());
 }

 public static boolean isRTL(Locale locale) {
    final int directionality = Character.getDirectionality(locale.getDisplayName().charAt(0));
    return directionality == Character.DIRECTIONALITY_RIGHT_TO_LEFT ||
            directionality == Character.DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC;
 }

private void setupViewPager(ViewPager viewPager) {
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
    if (isRTL()) {
        // The view has RTL layout
        adapter.addFragment(new S5(), getString(R.string.stage5));
        adapter.addFragment(new S4(), getString(R.string.stage4));
        adapter.addFragment(new S3(), getString(R.string.stage3));
        adapter.addFragment(new S2(), getString(R.string.stage2));
        adapter.addFragment(new S1(), getString(R.string.stage1));
    } else {
        // The view has LTR layout
        adapter.addFragment(new S1(), getString(R.string.stage1));
        adapter.addFragment(new S2(), getString(R.string.stage2));
        adapter.addFragment(new S3(), getString(R.string.stage3));
        adapter.addFragment(new S4(), getString(R.string.stage4));
        adapter.addFragment(new S5(), getString(R.string.stage5));
    }
    viewPager.setAdapter(adapter);
}

对于选项卡,您需要将方向设置为LTR(当它的RTL时看起来很乱)。

所以只使用了这段代码(它仅在API 17 +中提供):

 TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
        tabLayout.setLayoutDirection(View.LAYOUT_DIRECTION_LTR);
    }

我无法在API 17之前找到一种方法,但您不必将min SDK设置为17

答案 1 :(得分:0)

Hurray Android最近添加了名为 ViewPager2的新UI组件,该组件支持RTL布局

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

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

下面的链接讨论了迁移指南和示例应用程序:

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

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