今天忽然发现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
分享到:
相关推荐
本文将详细讲解如何在`TextView`中解决自动换行问题,并设置超过指定行数后使用省略号。 首先,我们需要了解`TextView`的一些关键属性: 1. `android:singleLine`:此属性在API 26及以下版本可用,当设置为`true`...
本文将详细讲解如何解决TextView的自动换行问题,并结合提供的`CustomTextView.java`源码和`textattr.xml`资源文件来深入理解这一技术。 首先,了解TextView的基本属性。TextView默认会根据其宽度自动进行换行,以...
用TextView显示的时候,会出现一个问题就是显示的文字中有括号、数字、或者英文的话他会立刻就换行,因为括号、数字等是半角,而汉字是全角,所以我们需要把半角转换为全角,使它们与汉字同占两个字节,现在已经解决...
在Android开发中,`TextView` 是一个非常基础且重要的组件,用于显示文本内容。然而,在实际应用中,我们可能会遇到`TextView...对于更复杂的情况,可能需要深入学习Android的布局渲染机制,以便更好地理解和解决问题。
然而,有时开发者会遇到一个棘手的问题,即`TextView`中的换行文字可能不会对齐,尤其是在多行显示时。这个问题通常表现为每一行的起始位置不一致,影响了整体布局的美观度。本文将深入探讨这个问题及其解决方案。 ...
以下是一些关于TextView自动换行的关键知识点: 1. **最大行数限制**:通过设置`setMaxLines(int maxLines)`,可以限制TextView显示的最大行数。一旦达到这个数量,TextView将会截断超出的内容并显示省略号。 2. *...
在Android开发中,...通过学习和理解这些代码,开发者可以更好地掌握解决TextView换行问题和动态显示全部内容的方法,提高应用的用户体验。记得在实际项目中测试各种情况,确保解决方案在不同场景下都能正常工作。
本文将深入探讨如何解决`TextView`自动换行导致的排版问题,并允许我们设置`SpannableString`以实现更多样化的文本效果。 首先,理解`TextView`的换行机制至关重要。`TextView`默认会根据其宽度自动进行文本换行,...
3. **多行显示**:默认情况下,`TextView`会根据内容自动换行。若需禁止换行,可以设置`android:breakStrategy`和`android:hyphenationFrequency`属性来调整换行策略。 ### 三、文字排版高级技巧 1. **行间距与...
这个"Android高级应用源码-textView根据长度自动换行.zip"压缩包很可能是包含了一个示例项目,演示了如何让TextView在文本超出其宽度时自动换行,以适应不同屏幕尺寸和布局需求。 首先,我们来了解TextView的基本...
本类实现了文字的竖直排版显示(中国古时的行文形式),虽然仍有许多特效及功能仍未实现,但基本的使用已经能满足。版权:尽管放心用吧,可以自行随意改进转载和使用,转载时请保留这段文字即可另特别感谢 老僧xp ...
这个压缩包"安卓Android源码——textView根据长度自动换行.zip"很可能包含了一个示例项目或代码片段,演示了如何在TextView中实现根据文本长度自动换行的功能。 在Android的TextView中,自动换行是默认开启的。当你...
学习并理解这种自定义TextView的实现,不仅可以帮助你解决当前的需求,还能提升对Android UI组件定制的理解,对于开发复杂UI交互的应用大有裨益。同时,这种技术也可以应用于其他场景,如阅读应用的字幕滚动效果、...
`LineBreakLayout`是一个专门用于实现自动换行标签效果的自定义控件,它解决了在一个有限的宽度内显示多个标签,并且能根据屏幕大小自动调整布局,使标签能够整齐、美观地换行显示。在本文中,我们将深入探讨`...
在这个场景中,我们关注的是一个名为"Android自动换行标签控件(二)"的主题,它涉及到如何利用`ViewGroup`来实现一个可以自动换行的标签控件。这样的控件通常用于展示多条分类标签,例如新闻类别或者产品属性,当...
总的来说,解决TextView的排版问题需要对Android的文本渲染机制有深入的理解,并灵活运用各种属性和工具。在项目中,应根据具体需求选择最合适的方法,以实现美观且易读的文本展示。`AlignTextView-master`可能提供...
总之,"Android 标签,可以自动换行的ViewGroup"是Android UI设计中一个重要的概念,它通过自动换行的能力提高了界面的适应性和用户体验。开发者可以利用现有的开源库或自定义ViewGroup来实现这一功能,以创建更加...
Android LinearLayout 实现自动换行 Android LinearLayout 实现自动换行是 Android 开发中常见的需求。LinearLayout 是 Android 中最常用的布局控件之一,但它有一个缺陷,就是不能自动换行。今天,我们将详细介绍...
总之,“Android实现View的排列自动换行”是一个涉及自定义View组、测量、布局和性能优化的综合性问题。通过理解并实现这样的功能,开发者能够更好地掌握Android UI的底层机制,从而设计出更加灵活和个性化的用户...
然而,系统默认的TextView在文本达到右边界时会自动换行,这在某些情况下可能不符合设计需求。标题和描述提到的问题,即如何实现“自定义TextView显示文字对齐到最右侧才换行”,是一个典型的布局定制问题。为了解决...