Android对字符串的处理
2012-05-16 17:12:52 来源:WEB开发网核心提示:需求:实现长文字的滚动停留,所以需要将长字符串截取成指定TextView长度的字符串数组 ,Android对字符串的处理,然后使用ViewFilpper实现,分割代码如下:/* * 根据要求分割字符串 */ public static String[] getLineStrs(String content, Pai
需求:实现长文字的滚动停留,所以需要将长字符串截取成指定TextView长度的字符串数组 ,然后使用ViewFilpper实现。
分割代码如下:
/* * 根据要求分割字符串 */ public static String[] getLineStrs(String content, Paint paint, float width, float textSize) { paint.setTextSize(textSize);//Note1:测量的工具首先需要定义单位 int index = 0; int start = 0; int end = 0; float textLength = paint.measureText(content); int lineNum = (int) Math.ceil(1.5*textLength / width) ;//Note2:计算行数因为判断的不准确,所以增加余量1.5倍,最后处理 String[] mSplitTextParts = new String[lineNum]; for (int i = 0; i <= content.length(); i++) { end = i; float measureLength = paint.measureText(content, start, end);//Note3:[start,end)范围的字符串 if (measureLength >= width) { mSplitTextParts[index] = content.substring(start, end);//Note4:[start,end)范围的字符串 start = end; index++; } if (end == content.length()) { mSplitTextParts[index] = content.substring(start, end); return Arrays.copyOf(mSplitTextParts, index);//Note5:因为行数判断的不准确,所以需要清除掉未赋值的null值字符串 } } return null;
猜测分割不准的原因是:中英文混杂。可能是半角全角的问题。
测试后发现:
1, 全英文状态下,半角全角计算的标准行数(未经过1.5倍的余量修正)都ok。
2, 全中文状态下,半角全角计算的标准行数(未经过1.5倍的余量修正)都ok。
3, 在中英文混杂状态下,计算的标准行数比实际截取的行数要大。在这里存疑。
- ››Android 当修改一些代码时,使用什么编译命令可以最...
- ››Android 如何添加一个apk使模拟器和真机都编译进去...
- ››Android 修改Camera拍照的默认保存路径
- ››Android 如何修改默认输入法
- ››android开发中finish()和System.exit(0)的区别
- ››Android手势识别简单封装类
- ››android中查看项目数字证书的两种方法
- ››Android中获取IMEI码的办法
- ››android 相机报错 setParameters failed
- ››Android重启运用程序的代码
- ››Android为ListView的Item设置不同的布局
- ››android bitmap与base64字符串的互相转换
更多精彩
赞助商链接