在中文英文混合时候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();
可以设置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