TextView如何决定左右对齐文字?
如果要对齐一段文本,则应该应用AlignmentSpan,它应该是这三个值之一(NORMAL,OPPOSITE,CENTER)。
如果将对齐设置为NORMAL,则取决于它决定左右对齐文本的第一个字符。
下面是一些文字和对齐的例子:
嗨:离开
@Hi:左
سلام:对
@سلام:对
* @嗨:左
* @سلام:对
嗨سلام:左
سلام嗨:对
我想知道textView究竟是如何确定文本对齐的? 如果可能,请提供正则表达式模式以确定文本对齐方式。
我想要这样的事情:
Pattern regex = Pattern.compile(patternString);
if(regex.matcher(text).matches()) {
// now text will be left aligned
}
我想找出patternString值。
答案 0 :(得分:3)
似乎算法基于文本的第一个基于字母的字符决定(即它找到非符号字符并检查它是否是RTL字符)。
您可以在RegEx中使用\p{L}
或\p{Letter}
来查找第一个匹配项,然后将其第一个字符与RTL unicode字符的范围进行比较:
boolean isRtl(String str) {
Pattern p = Pattern.compile("([^\\p{L}]*)(\\p{L})(.*)";
Matcher m = p.matcher(str);
if (m.matches()) {
String firstMatch = m.group(2);
char c = firstMatch.charAt(0);
return c >= 0x590 && c <= 0x6ff;
}
return false;
}