解决TextView排版混乱或者自动换行的问题

其实在TextView中遇到排版自动换行而导致混乱不堪的情况是非常常见的,而且导致这种问题产生的原因就是英文和中文混合输入,半角字符和全角字符混合在一起了。一般情况下,我们输入的数字、字母以及英文标点都是半角字符,所以占位无法确定,它们与汉字的占位不同,由于这个原因,导致很多文字的排版都是参差不齐的。

原因找到了,自然解决方法就来了,一般有以下两种方法来解决这种问题。

1、将TextView中的字符全角化。即将所有的数字、字母及标点全部转为全角字符,使它们与汉字同占两个字节,这样就可以避免由于占位导致的排版混乱问题了。

半角转为全角的代码如下:

/**

* 半角转换为全角

*

* @param str

* @return

*/

public static String ToDBC(String str) {

char[] c = str.toCharArray();

for (int i = 0; i < c.length; i++) {

if (c[i] == 12288) {

c[i] = (char) 32;

continue;

}

if (c[i] > 65280 && c[i] < 65375)

c[i] = (char) (c[i] - 65248);

}

return new String(c);

}

2. 去除特殊字符或将所有中文标号替换为英文标号。利用正则表达式将所有特殊字符过滤,将中文标号替换为英文标号。

/**

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

*

* @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();

}

时间: 2024-10-13 02:34:57

解决TextView排版混乱或者自动换行的问题的相关文章

JustifyTextView 解决TextView中英文混排自动换行的问题

最近在做着一个项目,里边会显示很长的一段文字,但是这些文字并不会整齐地排列,遇到文字中带有中英文时,果断给我换行了,好无语..接着就是不断地百度百度,找到了一堆一两年前的东西,不是叫你半角转全角,就是中文符号转英文符号,还有一些自定义TextView的试过了效果也不满意,最后在一个Android开发群中才得知JustifyTextView GitHub地址:https://github.com/ufo22940268/android-justifiedtextview 最后是自定义TextVie

HTML、DIV+CSS网页制作中排版混乱的几种常见的情况

对于Web前端初学者或者经验不够丰富的人来说,出现页面排版布局混乱的情况并不罕见,有时候明明前面部分的网页都很整齐美观,可是在接下来的部分中经常会出现网页布局混乱,比如content无法调整到开发者需要的位置,或者出现页面重叠的现象.以下内容是我个人在网页制作过程中关于网页排版混乱及其解决办法的一些经验总结,不足之处,希望大家互相补充学习. )DIV+CSS网页错位的原因与解决方法 常常我们会遇到我们要设置在一行显示的布局,却因为种种原因造成了错位,看到结果是在一行的最后一个盒子布局错位掉下去了

解决TextView错位的问题

错位,大多数是全角半角的问题 转化成全角 public String ToFull(String input){ char[] c=input.toCharArray(); for(int i=0;i if(c[i]==32){ c[i]=(char)12288; continue; } if(c[i]<127 && c[i]>32){ c[i]=(char)(c[i]+65248); } } return new String(c); } 转化成半角 public stati

使用echart的雷达图的时候,如果文字越界的解决办法记录,标签文字自动换行

使用echart的雷达图的时候,如果文字越界的解决办法记录,标签文字自动换行 前几天项目中有一个图表的是用echart生成的,遇到一个问题,就是在手机端显示的售时候,如果文字太长就会超出div,之前的效果如图所示: 后来查资料,发现这个标签的文字是可以自定义的,定义方式如下: 1 formatter: function(text){ 2 var strlength = text.length; 3 if(strlength % 2 == 1){ 4 text = text.replace(/\S

--解决TextView换行排版混乱问题--网上找到一个不错的方法--分享给大家

通过自定义TextView控件---- public class JustifyTextView extends TextView { private int mLineY; private int mViewWidth; public static final String TWO_CHINESE_BLANK = " "; public JustifyTextView(Context context, AttributeSet attrs) { super(context, attr

android中的textview显示汉字不能自动换行的一个解决办法

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:shrinkColumns="0" > <TableRow android:layout_width=&qu

TextView中英文排版混乱

TextView问题由来 TextView在中英文夹杂的时候,会出现自动断行的情况,相信许多人都碰见过.这是系统的一个Bug,在Android5.0以后被修复了,而5.0以下的还没有见到比较好的解决版本. 参考了网上的方法,有的朋友推荐使用全角和半角转换(没有解决问题),也有的推荐了JustifyTextView这个控件(效果也不理想). 于是我决定自定义一个TextView来做这件事,勉强解决了问题,但是代价是失去了很多TextView自身拥有的特性,而且TextView自身做了很多缓存和优化

Android AutoWrapTextView 解决中英文排版问题

1.概述 最近项目有新需求,UED给了个卡券密码的UI样式,如图: 我一看很简单啊,一个TextView解决问题,然后做好以后在模拟器里一看..... 纳尼,这个时候才想起来,TextView 中英文在一起会有排版问题,那怎么解决呢...... 思路 刚开始的想法是一个字符一个字符的去绘制,绘制到最右边的临界点就换行绘制,结果实践以后发现不同的字符之间的间距不一样,显示会非常凌乱,又没有什么好的方案解决这个间距问题,所以这个方案pass: 单个字符绘制不行那就一行一行绘制,根据View的长度把文

Android开发技巧——解决TextView加载HTML的一些问题

前几天在做一个Gradle用户指南的应用程序,使用的是TextView来加载HTML内容(至于为什么不用WebView,我也没有认真使用并比较过,也许以后会换吧),其中遇见了一些纠结的问题,所幸主要的问题都一一解决了. 下面说一下遇见的几个问题及我的解决方法. TextView异步加载HTML中的图片及图文重叠 在TextView中加载HTML图片,需要实现Html.ImageGetter接口,然后在public Drawable getDrawable(String source)中去获取图片