studio - textview android align right
TextAlignment en TextView para texto Rtl y Ltr (1)
¿Cómo decide TextView alinear el texto a la izquierda o a la derecha?
Si desea alinear una parte del texto, debe aplicar AlignmentSpan, que debe ser uno de estos 3 valores (NORMAL, OPUESTO, CENTRAL).
Si establece la alineación en NORMAL depende de qué es el primer carácter, decide alinear el texto a la izquierda o a la derecha.
A continuación hay algunos ejemplos de texto y alineación:
Hola: izquierda
@Hi: izquierda
سلام: Derecha
@ سلام: Derecha
* @ Hola: izquierda
* @ سلام: Derecha
Hola, سلام: izquierda
Hola Hola: Derecha
Quiero saber exactamente cómo textView determina la alineación de texto? Si es posible, proporcione un patrón de expresiones regulares para determinar la alineación del texto.
Quiero algo como esto:
Pattern regex = Pattern.compile(patternString);
if(regex.matcher(text).matches()) {
// now text will be left aligned
}
Quiero averiguar el valor de PatternString.
Parece que el algoritmo decide basado en el primer carácter basado en letras del texto (es decir, encuentra el carácter no simbólico y comprueba si es un carácter RTL o no).
Puede usar /p{L}
o /p{Letter}
en RegEx para encontrar la primera coincidencia, luego comparar su primer carácter con el rango de caracteres 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;
}