浅谈Android textview文字对齐换行的问题

 更新时间:2018年01月22日 10:00:53   作者:mikejaps  
下面小编就为大家分享一篇浅谈Android textview文字对齐换行的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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

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

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

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

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

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

/** 
  * 半角转换为全角 
  * 
  * @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()将中文标号替换为英文标号。则转化之后,则可解决排版混乱问题。

/** 
  * 去除特殊字符或将所有中文标号替换为英文标号 
  * 
  * @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(); 
 } 

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

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

以上这篇浅谈Android textview文字对齐换行的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Android自定义View实现柱状波形图的绘制

    Android自定义View实现柱状波形图的绘制

    柱状波形图是一种常见的图形。一个个柱子按顺序排列,构成一个波形图。本文将利用Android自定义View实现柱状波形图的绘制,需要的可以参考一下
    2022-08-08
  • Android ViewPager无限循环滑动并可自动滚动完整实例

    Android ViewPager无限循环滑动并可自动滚动完整实例

    对于Android ViewPager广告页可无限循环滑动并可自动滚动带有小圆点的这个功能很多APP都有这个功能,这里为大家提供了完整的实例代码
    2018-03-03
  • Android通过json向MySQL中读写数据的方法详解【写入篇】

    Android通过json向MySQL中读写数据的方法详解【写入篇】

    这篇文章主要介绍了Android通过json向MySQL中读写数据的方法,结合实例形式较为详细的分析了Android json类的定义、调用及php接收json数据并写入mysql的实现技巧,需要的朋友可以参考下
    2016-06-06
  • Android编程实现Gallery中每次滑动只显示一页的方法

    Android编程实现Gallery中每次滑动只显示一页的方法

    这篇文章主要介绍了Android编程实现Gallery中每次滑动只显示一页的方法,涉及Android扩展Gallery控件实现翻页效果控制的功能,涉及Android事件响应及属性控制的相关技巧,需要的朋友可以参考下
    2015-11-11
  • Android手机卫士之绑定sim卡序列号

    Android手机卫士之绑定sim卡序列号

    这篇文章主要介绍了Android手机卫士之绑定sim卡序列号的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • Android AIDL中Map参数传递的问题详解

    Android AIDL中Map参数传递的问题详解

    这篇文章主要给大家介绍了关于Android AIDL中Map参数传递问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友下面来一起看看吧。
    2017-12-12
  • Android中GridView插件的使用方法

    Android中GridView插件的使用方法

    今天小编就为大家分享一篇关于Android中GridView插件的使用方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • 详解Android studio中正确引入so文件的方法

    详解Android studio中正确引入so文件的方法

    本篇文章主要介绍了Android studio中正确引入so文件的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Android编程之Button控件用法实例分析

    Android编程之Button控件用法实例分析

    这篇文章主要介绍了Android编程之Button控件用法,较为详细的分析了Button控件的功能、定义及相关使用注意事项,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • Android使用Intent发送短信的实现方法

    Android使用Intent发送短信的实现方法

    这篇文章主要介绍了Android使用Intent发送短信的实现方法,结合简单实例形式分析了Android短信发送功能的实现技巧,需要的朋友可以参考下
    2016-07-07

最新评论