更多知识,更多乐趣

当前位置:首页软件开发Android → Android textview文字对齐换行的问题

Android textview文字对齐换行的问题

时间:2018-01-24 22:40:30来源:互联网我要评论(0)

android项目中的文字排版参差不齐的情况非常严重,不得不想办法解决一下。

经过研究之后,终于找到了textview自动换行导致混乱的原因了----半角字符与全角字符混乱所致!一般情况下,我们输入的数字、字母以及英文标点都是半角,所以占位无法确定。

它们与汉字的占位大大的不同,由于这个原因,导致很多文字的排版都是参差不齐的。

对此我找到了两种办法可以解决这个问题:

1. 将textview中的字符全角化。

即将所有的数字、字母及标点全部转为全角字符,使它们与汉字同占两个字节,这样就可以避免由于占位导致的排版混乱问题了。 半角转为全角的代码如下,只需调用即可。

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
  * 半角转换为全角
  *
  * @param input
  * @return
  */
 public static String ToDBC(String input) {
  char[] c = input.toCharArray();
  for (int i = 0; i < c.length; i++) {
   if (c[i] == 12288) {// 全角空格为12288,半角空格为32
    c[i] = (char) 32;
    continue;
   }
   if (c[i] > 65280 && c[i] < 65375)// 其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
    c[i] = (char) (c[i] - 65248);
  }
  return new String(c);
 }

2. 去除特殊字符或将所有中文标号替换为英文标号。

利用正则表达式将所有特殊字符过滤,或利用replaceAll()将中文标号替换为英文标号。则转化之后,则可解决排版混乱问题。

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
  * 去除特殊字符或将所有中文标号替换为英文标号
  *
  * @param str
  * @return
  */
 public static String stringFilter(String str) {
  str = str.replaceAll("【", "[").replaceAll("】", "]")
    .replaceAll("!", "!").replaceAll(":", ":");// 替换中文标号
  String regEx = "[『』]"; // 清除掉特殊字符
  Pattern p = Pattern.compile(regEx);
  Matcher m = p.matcher(str);
  return m.replaceAll("").trim();
 }

解决之前层次不齐的排版截图:

解决之后的整齐排版,如下图:


相关文章

网友评论

热门评论

最新评论

发表评论 查看所有评论()

昵称:
表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
字数: 0/500 (您的评论需要经过审核才能显示)

关于万荚 | 联系方式 | 发展历程 | 版权声明 | 帮助(?) | 网站地图 | 友情链接

Copyright 2005-2018 16WJ.COM 〖万荚网〗 版权所有 桂ICP备18000060号 |

声明: 本站所有文章来自互联网 如有异议 请与本站联系