7

我正在使用SlidingTabLayout并且我想从右向左滑动标签,但我找不到方法。

我已经尝试过“setGravity()”方法,但它不起作用。

4

3 回答 3

3

也许您需要尝试布局镜像:

要利用 RTL 布局镜像,只需对您的应用程序进行以下更改:

  1. 在您的应用清单中声明您的应用支持 RTL 镜像。具体来说,将 android:supportsRtl="true" 添加到清单文件中的元素。

  2. 将应用的所有“左/右”布局属性更改为新的“开始/结束”等效项。如果您将应用程序定位到 Android 4.2(应用程序的 targetSdkVersion 或 minSdkVersion 为 17 或更高版本),那么您应该使用“start”和“end”而不是“left”和“right”。例如,android:paddingLeft 应该变成 android:paddingStart。如果您希望您的应用程序使用低于 Android 4.2 的版本(应用程序的 targetSdkVersion 或 minSdkVersion 为 16 或更低),那么您应该在“left”和“right”之外添加“start”和 end”。例如,您将同时使用 android:paddingLeft 和 android:paddingStart。

于 2015-01-28T13:44:40.800 回答
0

您可以使用

 android.support.design.widget.TabLayout

来自最新 SDK 的库 android.support.design 并在上面应用Xcihnegan答案

于 2016-01-12T05:37:34.713 回答
0

我已尝试通过以下方式解决此问题:

 private void scrollToTab(int tabIndex, int positionOffset) {
        if (isRtlMode()) {
            scrollToTabRtl(tabIndex, positionOffset);
        } else {
            scrollToLtr(tabIndex, positionOffset);
        }
    }

 private void scrollToTabRtl(int tabIndex, int positionOffset) {
        final int maxItemCount = mTabStrip.getChildCount();
        if (maxItemCount == 0 || tabIndex < 0 || tabIndex >= maxItemCount) {
            return;
        }
        View activeItemView = mTabStrip.getChildAt(tabIndex);
        if (activeItemView != null) {
            int totalWidth = getWidth();
            int targetScroll = totalWidth - activeItemView.getRight() + positionOffset;
            super.smoothScrollTo(-targetScroll, 0);
        }
    }
于 2019-12-09T06:17:25.717 回答