【问题标题】:TextAlignment on TextView for Rtl and Ltr text用于 Rtl 和 Ltr 文本的 TextView 上的 TextAlignment
【发布时间】:2017-05-23 16:22:05
【问题描述】:

TextView 如何决定文本左对齐还是右对齐?

如果你想对齐一段文本,你应该应用 AlignmentSpan,它应该是这 3 个值之一(NORMAL、OPOSITE、CENTER)。

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

以下是一些文本和对齐方式的示例:

嗨:左

@Hi : 左

سلام : 对

@سلام:对

*@ 嗨:左

*@سلام : 对

你好 سلام : 左

سلام 嗨:对

我想知道 textView 究竟是如何确定文本对齐的? 如果可能,请提供一个正则表达式模式来确定文本对齐方式。

我想要这样的东西:

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

我想找出 patternString 的值。

【问题讨论】:

    标签: android textview text-alignment


    【解决方案1】:

    算法似乎是根据文本的第一个字母字符来决定的(即它找到非符号字符并检查它是否是 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;
    }
    

    【讨论】:

      猜你喜欢
      • 2019-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-12
      相关资源
      最近更新 更多