关于Textview maxline=1 ellipsize="end" 导致中英文数字混合分割错误的问题
2017-10-13 12:00
393 查看
本文转载自:http://blog.csdn.net/lhj_android/article/details/78143383
本文纯为记录
出现错误的现象
我想让textview显示:你好啊430000000呵呵呵呵呵呵呵赫尔呵呵. 由于我设置了maxline=1 ellipsize=”end” 在Textview宽度不够的时候应该显示成
你好啊430000000呵呵呵呵呵呵呵…(理想的显示)
结果在一些手机上 特别是5.0以下的手机 显示成
你好啊…
当时想着这么会出现这个情况呢 于是我上网上搜索了下 比较靠谱的说法是 当你设置ellipsize=”end” 这个属性时 textview会检测你的文字应该在那截断
****textview的折行包含以下规律:
1、半角字符与全角字符混乱所致:这种情况一般就是汉字与数字、英文字母混用。
2、TextView在显示中文的时候标点符号不能显示在一行的行首和行尾,如果一个标点符号刚好在一行的行尾,该标点符号就会连同前一个字符跳到下一行显示。
3、一个英文单词不能被显示在两行中( TextView在显示英文时,标点符号是可以放在行尾的,但英文单词也不能分开 )。**
网上试了很多方法 一种说是把文字全部转成全角(这样做不好看 看着很别扭)
还有的说重写textview
然后我想着既然系统截取单词判断出现了错误 那我就自己来截取合适的文字长度设置给textview不就行了。于是我就尝试着自己截取。所以我想到是看看系统提供的TextUtils有没有这样的方法 结果里面还真有。于是我调用了
(String) TextUtils.ellipsize(str,tv1.getPaint(),dp2px(120), TextUtils.TruncateAt.END);
第一个参数是: 想要设置给textview的文本内容
第二个参数是: textview的paint系统会用这个paint那测量文字有多长
第三个参数是: textview的宽度 这个宽度一般都能通过布局拿到 根据求取屏幕宽度 减去它左边和右边的布局就能知道多宽了
地四个阐述是: 截断方式
返回值: 系统根据textview的paint和textview宽度 返回一个正确的截断字符串
然后试了一下问题解决了
显示为
你好啊43000000…
第二种方法 还可以用SingleLine=“true”直接进行设置
出现过这个问题的朋友们可以试试这个方法。有更好的解决方法也请告知一下
本文纯为记录
出现错误的现象
我想让textview显示:你好啊430000000呵呵呵呵呵呵呵赫尔呵呵. 由于我设置了maxline=1 ellipsize=”end” 在Textview宽度不够的时候应该显示成
你好啊430000000呵呵呵呵呵呵呵…(理想的显示)
结果在一些手机上 特别是5.0以下的手机 显示成
你好啊…
当时想着这么会出现这个情况呢 于是我上网上搜索了下 比较靠谱的说法是 当你设置ellipsize=”end” 这个属性时 textview会检测你的文字应该在那截断
****textview的折行包含以下规律:
1、半角字符与全角字符混乱所致:这种情况一般就是汉字与数字、英文字母混用。
2、TextView在显示中文的时候标点符号不能显示在一行的行首和行尾,如果一个标点符号刚好在一行的行尾,该标点符号就会连同前一个字符跳到下一行显示。
3、一个英文单词不能被显示在两行中( TextView在显示英文时,标点符号是可以放在行尾的,但英文单词也不能分开 )。**
网上试了很多方法 一种说是把文字全部转成全角(这样做不好看 看着很别扭)
还有的说重写textview
然后我想着既然系统截取单词判断出现了错误 那我就自己来截取合适的文字长度设置给textview不就行了。于是我就尝试着自己截取。所以我想到是看看系统提供的TextUtils有没有这样的方法 结果里面还真有。于是我调用了
(String) TextUtils.ellipsize(str,tv1.getPaint(),dp2px(120), TextUtils.TruncateAt.END);
第一个参数是: 想要设置给textview的文本内容
第二个参数是: textview的paint系统会用这个paint那测量文字有多长
第三个参数是: textview的宽度 这个宽度一般都能通过布局拿到 根据求取屏幕宽度 减去它左边和右边的布局就能知道多宽了
地四个阐述是: 截断方式
返回值: 系统根据textview的paint和textview宽度 返回一个正确的截断字符串
然后试了一下问题解决了
显示为
你好啊43000000…
第二种方法 还可以用SingleLine=“true”直接进行设置
出现过这个问题的朋友们可以试试这个方法。有更好的解决方法也请告知一下
相关文章推荐
- 关于Textview maxline=1 ellipsize="end" 导致中英文数字混合分割错误的问题
- textview中有很多行,我只让它显示三行,最后显示...,我设置了android:maxLines="3"和android:ellipsize="end",但出现的问题是只显示两行就显示“...”
- android TextView多行文本(超过3行)使用ellipsize="end"属性无效问题的解决方法
- 关于android textview 中英文混合分行错误问题
- TextView限制最大行数,多出部分显示省略号,解决ellipsize = "end" 失效的问题
- singleLine=”true” 和 maxLines=”1″的区别 android:ellipsize="end"无效
- android TextView 显示不全的问题解决,此问题是设置了maxLines和ellipsize=end情况下发生的!
- 解决TextView中MaxLines与ellipsize=end冲突问题
- Android TextView 对于汉字与数字混合导致换行混乱的问题
- Android判断是否触发ellipsize="end"(即textview是否换行)
- 对于TextView 设置 Ellipsize ="End" 无效时的解决方法
- Android TextView关于android:ellipsize=end的一个bug
- 解决TextView中MaxLines与ellipsize=end冲突问题
- android 决TextView中MaxLines与ellipsize=end冲突问题
- 解决TextView中MaxLines与ellipsize=end冲突问题
- 【android学习】关于textview.setEllipsize(TextUtils.TruncateAt.valueOf("END"));失效
- 解决TextView中MaxLines与ellipsize=end冲突问题
- TextView设置ellipsize maxEms和singleLine 限制字符个数失效问题
- Android判断是否触发ellipsize="end"(即textview是否换行)
- TextView属性android:ellipsize="marquee"不生效的解决办法