2017-01-09 117 views
3

TextView如何决定左右对齐文本?TextView上的文本对齐为Rtl和Ltr文本

如果要对齐的一段文字,你应该申请AlignmentSpan这应该是这3个值(NORMAL,对面,CENTER)中的一个。

如果您将对齐设置为NORMAL,则取决于第一个字符是什么,它决定将文本向左或向右对齐。

以下是文字和对齐的一些例子:

喜:左

@Hi:左

سلام:右键

@سلام:右键

* @喜:左

* @سلام:右

喜سلام:左

سلام喜:右键

我想知道的TextView究竟如何确定文本对齐? 如果可能的话,请给一个正则表达式来确定文本对齐方式。

我想是这样的:

Pattern regex = Pattern.compile(patternString); 
if(regex.matcher(text).matches()) { 
    // now text will be left aligned 
} 

我想找出patternString值。

回答

3

看来算法决定基于对文本的第一信为本字符(即它找到的非符号字符,并检查它是否是一个RTL字符或没有)。

您可以使用\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; 
}