展会信息港展会大全

Android对字符串的处理 安卓开发教程
来源:互联网   发布日期:2016-01-19 12:19:18   浏览:2019次  

导读:需求:实现长文字的滚动停留,所以需要将长字符串截取成指定TextView长度的字符串数组 ,然后使用ViewFilpper实现。分割代码如下: * * 根据要求分割字符串 * public static String[] getLineStrs( ...

需求:实现长文字的滚动停留,所以需要将长字符串截取成指定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

相关内容
AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港