`

解决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) {
				c[i] = (char) 32;
				continue;
			}
			if (c[i] > 65280 && c[i] < 65375)
				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();
	}


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




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




转自:http://blog.sina.com.cn/s/blog_73615d370100zpt5.html
  • 大小: 196.6 KB
  • 大小: 203.8 KB
分享到:
评论
3 楼 xiangxm 2013-10-12  
好像对于正则的地方没作用
2 楼 chinapengwei_wh 2012-10-29  
谢了,正好解决我的问题
1 楼 messigoogle 2012-09-18  
漂亮,楼主 

相关推荐

    TextView解决自动换行问题

    本文将详细讲解如何在`TextView`中解决自动换行问题,并设置超过指定行数后使用省略号。 首先,我们需要了解`TextView`的一些关键属性: 1. `android:singleLine`:此属性在API 26及以下版本可用,当设置为`true`...

    Android开发TextView排版问题取消自动换行

    本文将详细讲解如何解决TextView的自动换行问题,并结合提供的`CustomTextView.java`源码和`textattr.xml`资源文件来深入理解这一技术。 首先,了解TextView的基本属性。TextView默认会根据其宽度自动进行换行,以...

    解决TextView异常换行

    用TextView显示的时候,会出现一个问题就是显示的文字中有括号、数字、或者英文的话他会立刻就换行,因为括号、数字等是半角,而汉字是全角,所以我们需要把半角转换为全角,使它们与汉字同占两个字节,现在已经解决...

    TextView异常换行

    在Android开发中,`TextView` 是一个非常基础且重要的组件,用于显示文本内容。然而,在实际应用中,我们可能会遇到`TextView...对于更复杂的情况,可能需要深入学习Android的布局渲染机制,以便更好地理解和解决问题。

    Android textView根据长度自动换行-IT计算机-毕业设计.zip

    以下是一些关于TextView自动换行的关键知识点: 1. **最大行数限制**:通过设置`setMaxLines(int maxLines)`,可以限制TextView显示的最大行数。一旦达到这个数量,TextView将会截断超出的内容并显示省略号。 2. *...

    TextView解决中英文换行bug和点击显示全部功能

    在Android开发中,...通过学习和理解这些代码,开发者可以更好地掌握解决TextView换行问题和动态显示全部内容的方法,提高应用的用户体验。记得在实际项目中测试各种情况,确保解决方案在不同场景下都能正常工作。

    android textview 文字排版 换行

    3. **多行显示**:默认情况下,`TextView`会根据内容自动换行。若需禁止换行,可以设置`android:breakStrategy`和`android:hyphenationFrequency`属性来调整换行策略。 ### 三、文字排版高级技巧 1. **行间距与...

    Android高级应用源码-textView根据长度自动换行.zip

    这个"Android高级应用源码-textView根据长度自动换行.zip"压缩包很可能是包含了一个示例项目,演示了如何让TextView在文本超出其宽度时自动换行,以适应不同屏幕尺寸和布局需求。 首先,我们来了解TextView的基本...

    Android-TextView换行排版混乱-允许设置SpannableString

    本文将深入探讨如何解决`TextView`自动换行导致的排版问题,并允许我们设置`SpannableString`以实现更多样化的文本效果。 首先,理解`TextView`的换行机制至关重要。`TextView`默认会根据其宽度自动进行文本换行,...

    TextView自动换行源代码

    本类实现了文字的竖直排版显示(中国古时的行文形式),虽然仍有许多特效及功能仍未实现,但基本的使用已经能满足。版权:尽管放心用吧,可以自行随意改进转载和使用,转载时请保留这段文字即可另特别感谢 老僧xp ...

    安卓Android源码——textView根据长度自动换行.zip

    这个压缩包"安卓Android源码——textView根据长度自动换行.zip"很可能包含了一个示例项目或代码片段,演示了如何在TextView中实现根据文本长度自动换行的功能。 在Android的TextView中,自动换行是默认开启的。当你...

    android 逐行显示自动换行的textview

    学习并理解这种自定义TextView的实现,不仅可以帮助你解决当前的需求,还能提升对Android UI组件定制的理解,对于开发复杂UI交互的应用大有裨益。同时,这种技术也可以应用于其他场景,如阅读应用的字幕滚动效果、...

    解决 TextView 中文、英文、数字、符号 排版问题

    总的来说,解决TextView的排版问题需要对Android的文本渲染机制有深入的理解,并灵活运用各种属性和工具。在项目中,应根据具体需求选择最合适的方法,以实现美观且易读的文本展示。`AlignTextView-master`可能提供...

    Android自动换行标签控件LineBreakLayout

    `LineBreakLayout`是一个专门用于实现自动换行标签效果的自定义控件,它解决了在一个有限的宽度内显示多个标签,并且能根据屏幕大小自动调整布局,使标签能够整齐、美观地换行显示。在本文中,我们将深入探讨`...

    Android LinearLayout实现自动换行

    Android LinearLayout 实现自动换行 Android LinearLayout 实现自动换行是 Android 开发中常见的需求。LinearLayout 是 Android 中最常用的布局控件之一,但它有一个缺陷,就是不能自动换行。今天,我们将详细介绍...

    Android自动换行标签控件(二)

    在这个场景中,我们关注的是一个名为"Android自动换行标签控件(二)"的主题,它涉及到如何利用`ViewGroup`来实现一个可以自动换行的标签控件。这样的控件通常用于展示多条分类标签,例如新闻类别或者产品属性,当...

    Android 标签,可以自动换行的ViewGroup

    总之,"Android 标签,可以自动换行的ViewGroup"是Android UI设计中一个重要的概念,它通过自动换行的能力提高了界面的适应性和用户体验。开发者可以利用现有的开源库或自定义ViewGroup来实现这一功能,以创建更加...

    Android 实现View的排列自动换行

    总之,“Android实现View的排列自动换行”是一个涉及自定义View组、测量、布局和性能优化的综合性问题。通过理解并实现这样的功能,开发者能够更好地掌握Android UI的底层机制,从而设计出更加灵活和个性化的用户...

    自定义textview显示文字对齐到最右侧才换行

    然而,系统默认的TextView在文本达到右边界时会自动换行,这在某些情况下可能不符合设计需求。标题和描述提到的问题,即如何实现“自定义TextView显示文字对齐到最右侧才换行”,是一个典型的布局定制问题。为了解决...

    Android-MultipleTextView是一个通过重写TextView实现去除原生默认内边距并扩展了一些其他功能

    5. **动态换行**:在一些情况下,开发者可能希望文本在达到特定宽度后自动换行,`MultipleTextView`可能提供了这样的功能,以适应不同屏幕尺寸和布局变化。 6. **文本测量优化**:为了提高性能,`MultipleTextView`...

Global site tag (gtag.js) - Google Analytics