我想在 TextView 中用(从右到左的语言,即阿拉伯语)编写文本。但我想让文字书写方向从右到左。gravity:right
只会将文本右对齐。我想从右到左对齐文本(使单词和数字出现在他输入的行中)。如何 ?
12 回答
另一种可以在旧版本的android中使用并且可以在字符串中的任何位置使用的聪明方法,即使在最新版本的android中也更方便,是在字符串中包含从右到左的标记甚至从左到右的标记需要时:
left-to-right mark: ‎ or ‎ (U+200E)
right-to-left mark: ‏ or ‏ (U+200F)
它是这样下来的:
String rtl = "Hello \u200F(سلام)";
这种方法的好处是,您甚至可以在(,{,[,! 等标点符号后使用它,它们的位置不正确!示例:
سلام! // wrong position
سلام! // right position by adding RLM after !
看看怎么样!正确定位在第二行,实际上后面有一个RLM,即使它不可见,您也可以复制粘贴它。
您看到的第二个好处是您可以在任何支持 RTL 的系统(如浏览器、word 等)中使用此方法(这些字符代码)。
只需将此属性放在您的 TextView 中,一切都会正常运行,它会自动检测您的文本并相应更改
android:textDirection="anyRtl"
为时已晚,但android:gravity="right"
奏效了。
在xml中为 textview设置这一行:
android:textDirection="locale"
尝试使用
textview.setTextDirection(View.TEXT_DIRECTION_RTL);
或者
textview.setTextDirection(View.TEXT_DIRECTION_ANY_RTL);
在正常编辑文本的情况下,这将起作用
android:textDirection="rtl"
但是在密码字段的情况下,这还不够,请遵循此;
android:textDirection="rtl"
android:gravity="right"
使用android:layoutDirection="rtl"
andandroid:textAlignment="viewStart"
使文本视图从右到左。
试试这个,因为它对我有用android:textDirection="rtl"
将这些添加到您的editText:
android:gravity="right"
android:textDirection="rtl"
PS:android:textDirection
需要 API 级别 17
只是添加我自己对此类问题的经验。在我的情况下,除了建议的解决方案之外,我还必须用这种字符 ״ 的 RTL(在我的情况下为希伯来语)表示替换英文 " 字符
通过在我的 xml 代码中奇怪地使用如下属性,我得到了一个从右到左的带有正确标点符号的文本。但这不是多语言文本的完美解决方案:
android:textDirection="ltr"
android:gravity="right"
设置 ltr 可以纠正标点符号问题,例如右侧有点而不是左侧。
重力属性使文本从右向左流动。
TextView 的最佳方式 textDirection,不要使用 layoutDirection
<TextView
android:id="@+id/viewCountTv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textDirection="anyRtl"
android:gravity="center"/>