您的位置:首页 > 移动开发 > Android开发

关于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 这样的参数,具体代码如下

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android textview
相关文章推荐