在中文英文混合时候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




更多相关文章

  1. Android客制化------在设置中加入RAM flash计算
  2. Android培训班(50)
  3. Android(安卓)View系列(三):View的绘制流程
  4. Android(安卓)文字居中方法
  5. 我的Android进阶之旅------>Android颜色值(#AARRGGBB)透明度百分比
  6. Android(安卓)计算执行时间间隔请使用SystemClock.elapsedRealti
  7. Android在绘制View之前计算其高度 / 宽度
  8. 小白用网格布局实现简单的计算器 ——Android
  9. 我的第一个Android程序,BMI计算器,分享一下源码

随机推荐

  1. 浅谈Android五大布局(一)――LinearLayout
  2. Debug Android(安卓)and Linux suspend a
  3. Android(安卓)NullPointerException解决
  4. Android重要类学习之——Activity
  5. 标题:[资讯]注意!Android惊爆两安全漏洞
  6. Android(安卓)根文件系统启动过程(init进
  7. 在Ubuntu16.04上下载并编译Android内核源
  8. Android自学笔记-1-android运行时Dalvik
  9. android 中使用java aes加密算法,报错信息
  10. 3G之Android学习第一章节>