关于android textview 中英文混合分行错误问题
2016-08-02 18:04
2616 查看
在中文英文混合时候textview 的分行就出现了错误
比如这样的字符串:宁静致远: adhadjjlskjlhfajfoiweuiddncxcnxchiosafjionjfdhvwureighbv cn vcvhtubfvcx,zjcxljclvhsdhfb 就出现了 问题 如下:
这里用 StaticLayout 来计算分行情况 计算的不对,打印如下:
说明Android 的分行计算方式出现了问题这里找到了一点资料:
http://blog.iamzsx.me/show.html?id=150001
但是在IOS 系统下就label中有 lb.lineBreakMode = NSLineBreakByCharWrapping; 这样的按字符来分行才能填充满每一行.
Android需要在API 23 以上才有IOS 这样的参数,具体代码如下
在API23 Textview新增加了 参数:
可以设置Textview的内容对齐边界.
另外 利用Paint 来计算文字长度,
但是只支持纯文字,不支持spannerable的文字,源码中直接把spannerable 转成string了:
而且在测量时候也不支持 spannerable 的测量..
参考:
http://tieba.baidu.com/p/4106306931 http://mikewang.blog.51cto.com/3826268/871765 http://www.eoeandroid.com/blog-578780-22865.html https://developer.android.com/reference/android/text/StaticLayout.Builder.html
比如这样的字符串:宁静致远: adhadjjlskjlhfajfoiweuiddncxcnxchiosafjionjfdhvwureighbv cn vcvhtubfvcx,zjcxljclvhsdhfb 就出现了 问题 如下:
这里用 StaticLayout 来计算分行情况 计算的不对,打印如下:
说明Android 的分行计算方式出现了问题这里找到了一点资料:
http://blog.iamzsx.me/show.html?id=150001
但是在IOS 系统下就label中有 lb.lineBreakMode = NSLineBreakByCharWrapping; 这样的按字符来分行才能填充满每一行.
Android需要在API 23 以上才有IOS 这样的参数,具体代码如下
StaticLayout.Builder builder = StaticLayout.Builder.obtain(msg,0,msg.length(),tv.getPaint(),width); builder.setBreakStrategy(StaticLayout.BREAK_STRATEGY_BALANCED); StaticLayout staticLayout = builder.build();
在API23 Textview新增加了 参数:
可以设置Textview的内容对齐边界.
另外 利用Paint 来计算文字长度,
int line2length = tv.getPaint().breakText(msg,line1length,msg.length(),true,width,null);
但是只支持纯文字,不支持spannerable的文字,源码中直接把spannerable 转成string了:
而且在测量时候也不支持 spannerable 的测量..
参考:
http://tieba.baidu.com/p/4106306931 http://mikewang.blog.51cto.com/3826268/871765 http://www.eoeandroid.com/blog-578780-22865.html https://developer.android.com/reference/android/text/StaticLayout.Builder.html
相关文章推荐
- 关于Textview maxline=1 ellipsize="end" 导致中英文数字混合分割错误的问题
- 关于Textview maxline=1 ellipsize="end" 导致中英文数字混合分割错误的问题
- 关于android中改变TextView背景颜色以及文字颜色的问题
- 关于android开发ListView的Adapter的convertView中有EditText的问题
- Android AutoWrapTextView中英文排版问题的解决方法
- Android AutoWrapTextView 解决中英文排版问题
- Android关于TextView 宽度过大导致Drawable无法居中问题
- android中关于textview字数显示的问题
- Android 开发关于Button或TextView控件英文字符全部显示大小写问题
- 关于android 设置TextView可点击出现覆盖的问题
- android 关于TextView getLineCount() 获得的值始终为0问题
- Android TextView 对于汉字与数字混合导致换行混乱的问题
- 关于TextView限制长度的中英文混合输入
- 【TextView】Android TextView显示省略号的问题(关于TextView maxLength 和maxEms的学习)
- 关于android text view 加载第三方字库导致内存泄漏问题
- android关于TextView的drawableLeft,drawableTop,drawableRight,drawableRight的drawable大小及位置问题
- 解决Android原生TextView显示中英文等末尾参差不齐问题
- 关于Android.widget.Button cannot be cast to com.esri.android.map.MapView错误的问题
- JustifyTextView 解决TextView中英文混排排版问题,android文字排版不齐,
- android 开发:使得TextView文本左右两边都对齐--解决中英文对齐问题。