如何根据所选语言从右到左而不是从左到右定位标签?

时间:2018-03-29 06:32:26

标签: android locale

我有一个多语言应用程序。适用于该应用程序的工具使用英语,并且所有标签都完美地放置在所需的位置。

现在我有一个场景,当我改变从英语到阿拉伯语应用程序的语言正确地进行翻译。但问题在于标签的放置,我想放置来自rtl而不是ltr的标签。

3 个答案:

答案 0 :(得分:3)

对于API级别17或更高级别在XML中设置属性textDirection

android:textDirection="anyRtl"

对于以下API级别17 ,请在XML中使用属性textAlignment

android:textAlignment="viewStart"

答案 1 :(得分:1)

除了@Akkita的答案,您还可以使用textDirection:"anyRtl",如果找到任何强大的“正确方向”,它会将文本的方向设置为右侧。角色或左边他发现了一个强大的左方向"字符

来自Documentation of views

  

文字方向正在使用" any-RTL"算法。段落方向是RTL,如果它包含任何强RTL字符,否则它是LTR,如果它包含任何强LTR字符。如果两者都没有,则段落方向是视图的已解析布局方向。

我建议为每个视图制作2个不同的布局,一个是左方向,另一个是右方向。在这种情况下,您可以自由地根据您将要使用的文本类型调整布局,因此使用textDirection="rtl"

任何一种情况都是好的,当你不需要完全控制显示器时,Ankita的第一个是有用的,你可以允许自己信任" anyRTL" algorythm。

第二种解决方案为您提供更多工作,但可以让您完全控制结果布局。

最后一件事。我不确定但是通过使用阿拉伯语语言环境创建布局我认为文本方向会自动更改

Right ot Left or Left to right layout

答案 2 :(得分:0)

为了在您的应用中支持RTL,您首先需要将android:supportsRtl="true"添加到清单文件中的<application>元素。

如果您的应用API≥17,请替换所有

带有layout_marginLeft

layout_marginStart 带有layout_marginRight

layout_marginEnd 带有paddingLeft

paddingStart 带有paddingRight

paddingEnd

如果您的应用支持API&lt; 17添加layout_marginStartlayout_marginEnd以及layout_marginLeftlayout_marginRight