TextView默认的Gravity是什么?

7

在Android中,当TextView从RTL资源(如阿拉伯文本)或LTR资源(如英语)获取文本时,其文本方向(或重力)似乎会自动更改。默认的TextView方向(或重力)是什么,如何获取它? 实际上,我正在尝试找出输入的文本语言类型(RTL还是LTR)?如果是混合文本,其中包含RTL和LTR,怎么办?


如果您想知道输入的文本语言(RTL或LTR)是什么类型,只需添加一个textWatcher即可。 - tiny sunlight
3个回答

7

默认的TextView方向(或重力)是什么?

在TextView源代码中,它被初始化为:

private int mGravity = Gravity.TOP | Gravity.START;

看起来是 Gravity.TOPGravity.STARTSTART 与 LTR 或 RTL 无关。

如何获得它

因此,获取它(你只知道 Gravity.START)对于你的目的是无意义的 - 查找输入的文本语言(RTL 还是 LTR)的类型

对于其他方法,您可以估计文本本身是 RTL 还是 LTR;例如在这里讨论:在 Android 中识别 RTL 语言


非常感谢。我从您提供的链接中得到了答案。 - Mariox

5
如果您的布局中有一个TextView,您可以使用以下方法获取该视图的对齐方式:
TextView textView = (TextView) findViewById(R.id.text_view);
int gravity = textView.getGravity();

默认情况下,该值为8388659,即0x800033。
请参考TextView的文档(此处)。通过操作十六进制值,您可以获得TextView的默认文本方向。
例如:在这种情况下,它是0x800033。它等于0x800003 | 0x30。这意味着重力是start | top

1
默认的TextView对齐方式为- Gravity.TOP | Gravity.START。

这个回答解决了问题吗,还是只是一条评论? - Wai Ha Lee

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