安卓:ConstraintLayout 支持RTL

4

我查阅了很多解决方案,但是我不明白如何在安卓中使用ConstraintLayout实现从右向左(RTL)的设计支持。


2
使用“start”和“end”约束代替“left”和“right”约束(例如,layout_constraintEnd_toStartOf),与RelativeLayout相同。 - CommonsWare
2个回答

12

只需将约束从Left更改为Start,并将Right更改为End

app:layout_constraintLeft_toRightOf = layout_constraintStart_toEndOf
app:layout_constraintRight_toLeftOf = layout_constraintEnd_toStartOf
app:layout_constraintLeft_toLeftOf = layout_constraintStart_toStartOf
app:layout_constraintRight_toRightOf = layout_constraintEnd_toEndOf

我相信这对你来说会完美地发挥作用,

请查看我的范例:item_list.xml

从左到右的屏幕截图:

英文

从右到左的屏幕截图:

RTL

注意: 我希望你已经在AndroidManifest.xml文件中添加了这一行:android:supportsRtl="true",并且在某些地方需要移除textAlignment属性。这样做可以确保阿拉伯语对齐没问题。

更新:

更好的实践方法是同时添加和设置这两个属性,以避免 API 级别版本的支持问题。

layout_constraintLeft_toRightOf
layout_constraintStart_toEndOf

layout_constraintRight_toLeftOf
layout_constraintEnd_toStartOf

layout_constraintLeft_toLeftOf
layout_constraintStart_toStartOf

layout_constraintRight_toRightOf
layout_constraintEnd_toEndOf

似乎工作正常,但我没有使用任何textAlignment属性,仍然在RTL中将文本显示在左侧。 - user7555773
哦,很好的评论。当您将阿拉伯语文本设置为TextView时,它会自动从右到左设置,但请确保您没有在任何地方设置宽度常量。 - Mukesh Lokare
2
约束的开始/结束在API 16中是否有效?为什么不同时添加左/右和开始/结束以支持旧版和新版? - Android Developer

1
请执行以下操作:
  1. Left替换为Start
  2. Right替换为End

如果您仍在使用leftDrawingrightDrawing,也需要将其替换为startDrawingendDrawing

内边距同理,

不要忘记在AndroidManifest文件中添加以下行:

android:supportsRtl="true"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接