cocos2d-android-1文本字符串的换行
2014-04-14 11:31
441 查看
昨天看完CCLabel里面文本根据dimension的自动换行功能,刚开始觉得很多部分都是坑,槽点太多,今天再回顾看一遍,发现虽然问题还是有,但有几个部分总算明白为什么是那么个写法了~
致歉……
通过 CCLabel.makeLabel 静态方法得到一个实体,之后可以传入一个dimension (CGSize 类型) 参数来指定文本绘制的大小。
槽点继续:
槽点1:假如你要显示的是中文,so sorry. 这个方法不适合你。
槽点2:cocos2d-x 可以通过传入(XXX,0) 来指定自动调整Label的高度。但你就不能这样~
槽点3:假如你不知道怎么强制换行,试试将'\n'换成' '(空格),不保证有用哈。至于原因,请看下面逻辑
逻辑整理:
原(针对英文的自动换行):将字符串根据' '切割成N个单词,再遍历所有单词逐个进行拼接。如果这个单词接上去之后该行的宽度不超过dimension的宽度,那么这个单词就接上去,否则这个单词另起一行。 也就是说,这个自动换行功能没有像遇到\n就强制换行的功能(除非你自己再去实现下)。
改(针对中文的自动换行):将字符串根据\n切割成N行,再遍历每一行,如果该行宽度超过dimension的宽度,则保留不大于dimension宽度的字符串,剩余字符串另起一行。
传送门:引自cocos2d的获取字符串长度和高度的计算方法
特别奉送(中文字符串自动换行):
致歉……
通过 CCLabel.makeLabel 静态方法得到一个实体,之后可以传入一个dimension (CGSize 类型) 参数来指定文本绘制的大小。
槽点继续:
槽点1:假如你要显示的是中文,so sorry. 这个方法不适合你。
槽点2:cocos2d-x 可以通过传入(XXX,0) 来指定自动调整Label的高度。但你就不能这样~
槽点3:假如你不知道怎么强制换行,试试将'\n'换成' '(空格),不保证有用哈。至于原因,请看下面逻辑
逻辑整理:
原(针对英文的自动换行):将字符串根据' '切割成N个单词,再遍历所有单词逐个进行拼接。如果这个单词接上去之后该行的宽度不超过dimension的宽度,那么这个单词就接上去,否则这个单词另起一行。 也就是说,这个自动换行功能没有像遇到\n就强制换行的功能(除非你自己再去实现下)。
改(针对中文的自动换行):将字符串根据\n切割成N行,再遍历每一行,如果该行宽度超过dimension的宽度,则保留不大于dimension宽度的字符串,剩余字符串另起一行。
传送门:引自cocos2d的获取字符串长度和高度的计算方法
特别奉送(中文字符串自动换行):
protected ArrayList<String> wrapText(Paint textPaint, String text, float width) { /* * the role is: * 1.Split lines by '\n'. * 2.Add a new line if length of word is larger than width. * * *** note:This method is useful for Chinese, but not for English. */ ArrayList<String> lines = new ArrayList<String>(); String[] words = text.split("\n"); for (String word : words) { float wordWidth = textPaint.measureText(word); if (wordWidth < width) { lines.add(word); } else { int i = word.length() - 1; for (; i >= 0; i--) { wordWidth = textPaint.measureText(word, 0, i); if (wordWidth < width) { break; } } if (i > 0) { lines.add(word.substring(0, i)); lines.add(word.substring(i, word.length())); } else { lines.add(word); } } } return lines; }
相关文章推荐
- cocos2d-x改底层之RichText富文本换行
- 我的Android笔记(2)--利用FontMetrics获取文本字符串的宽高 实现水平居中 垂直居中
- elphi 怎么给字符串里加回车换行,label显示多行文本的两种方法
- Android:去除字符串中空格制表符换行
- Android应用开发之(字符串替换与文本颜色改变方案)
- 批处理替换文本文件中的字符串,并保留换行
- android关于文本字符串进行URLEncoder.encode()编码后 空格 回车的处理
- span中文本内容有空格会自动换行(某些Android手机)
- android staticlayout使用讲解,可实现文本绘制换行处理
- cocos2d-x 多行字符串换行显示以及CCLabelTTF中的bug修改
- Android中用StaticLayout实现文本绘制自动换行详解
- Android应用开发之(字符串替换与文本颜色改变方案)
- 01-替换输入文本的空格和换行(字符串处理)
- Android中使用react-native框架中的View组件如何使其中的文本换行
- white-space: nowrap 与字符串(文本)换行
- android字符串换行不正常的问题
- Android实战技巧之一:文本与布局(字符串变量在资源里替换)
- C# 字符串多行显示、文本换行
- android 字符串换行 空格
- Android UI设计 文本输入框EditText用法(输入密码 隐藏显示输入的字符串)