2017-01-09 61 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; 
}