考虑代码段:
<TextView
android:layout_width="wrap_content"
android:layout_width="wrap_content"
android:text="Hello!"
android:textDirection="locale"/>
代码显示的结果为“!Hello”,而不是预期的“ Hello!”当OS语言设置为RTL时。 仅在将textDirection设置为“ locale”时才能观察到此情况,否则,文本将正确显示。
我需要将TextDirection设置为语言环境,以便根据OS语言环境在textview中对齐文本。 有没有一种方法可以将文本方向用作语言环境而不会弄乱文本呈现或任何其他简单的解决方案来实现相同的效果。
PS:我希望在全局级别将其应用于所有textview,因此不能使用textAlignment(作为viewStart),因为那样会干扰在View上设置的gravity属性。 (具体来说,由于设置了textalignment = viewStart,将忽略重力设置为中心水平线)
答案 0 :(得分:0)
"locale"
没什么特别的,当您使用"rtl"
进行LTR文本以 !
结尾的字段的textDirection时,会出现相同的显示。或 .
,或其他没有强方向性的标点符号。
可以做什么:
以‎
符号结尾这些文本:
android:text="Hello!\u200e"
"ltr"
textDirection。改用android:textAlignment="viewStart"
:
<FrameLayout
android:layoutDirection="rtl" ...>
<TextView
android:text="Hello!"
android:textAlignment="viewStart"
android:layout_width="80dp"
android:padding="12dp"
android:background="@android:color/black"
android:textColor="@android:color/white"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
/>