从右到左语言的滑动标签布局
Sliding tab layout for right to left languages
我正在使用 SlidingTabLayout,我想从右向左滑动标签,但我找不到方法。
我已经尝试了 'setGravity()' 方法,但它不起作用。
也许您需要尝试布局镜像:
要利用 RTL 布局镜像,只需对您的应用进行以下更改:
在您的应用清单中声明您的应用支持 RTL 镜像。
具体来说,将 android:supportsRtl="true" 添加到清单文件中的元素。
将您应用的所有 "left/right" 布局属性更改为新的 "start/end" 等效项。
如果您将应用定位到 Android 4.2(应用的 targetSdkVersion 或 minSdkVersion 为 17 或更高版本),那么您应该使用“开始”和“结束”而不是“左”和“右”。例如,android:paddingLeft 应该变成 android:paddingStart。
如果您希望您的应用程序使用早于 Android 4.2 的版本(应用程序的 targetSdkVersion 或 minSdkVersion 为 16 或更低),则除了“left”和“right”之外,还应添加“start”和“end”。例如,您可以同时使用 android:paddingLeft 和 android:paddingStart。
你可以使用
android.support.design.widget.TabLayout
来自库 android.support.design 来自最新的 SDK
并应用上面的Xcihnegan答案
我已经尝试通过这个解决这个问题:
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);
}
}
我正在使用 SlidingTabLayout,我想从右向左滑动标签,但我找不到方法。
我已经尝试了 'setGravity()' 方法,但它不起作用。
也许您需要尝试布局镜像:
要利用 RTL 布局镜像,只需对您的应用进行以下更改:
在您的应用清单中声明您的应用支持 RTL 镜像。 具体来说,将 android:supportsRtl="true" 添加到清单文件中的元素。
将您应用的所有 "left/right" 布局属性更改为新的 "start/end" 等效项。 如果您将应用定位到 Android 4.2(应用的 targetSdkVersion 或 minSdkVersion 为 17 或更高版本),那么您应该使用“开始”和“结束”而不是“左”和“右”。例如,android:paddingLeft 应该变成 android:paddingStart。 如果您希望您的应用程序使用早于 Android 4.2 的版本(应用程序的 targetSdkVersion 或 minSdkVersion 为 16 或更低),则除了“left”和“right”之外,还应添加“start”和“end”。例如,您可以同时使用 android:paddingLeft 和 android:paddingStart。
你可以使用
android.support.design.widget.TabLayout
来自库 android.support.design 来自最新的 SDK 并应用上面的Xcihnegan答案
我已经尝试通过这个解决这个问题:
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);
}
}