歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android對字符串的處理

Android對字符串的處理

日期:2017/3/1 10:22:51   编辑:Linux編程

需求:實現長文字的滾動停留,所以需要將長字符串截取成指定TextView長度的字符串數組 ,然後使用ViewFilpper實現。

分割代碼如下:

  1. /*
  2. * 根據要求分割字符串
  3. */
  4. public static String[] getLineStrs(String content, Paint paint, float width, float textSize) {
  5. paint.setTextSize(textSize);//Note1:測量的工具首先需要定義單位
  6. int index = 0;
  7. int start = 0;
  8. int end = 0;
  9. float textLength = paint.measureText(content);
  10. int lineNum = (int) Math.ceil(1.5*textLength / width) ;//Note2:計算行數因為判斷的不准確,所以增加余量1.5倍,最後處理
  11. String[] mSplitTextParts = new String[lineNum];
  12. for (int i = 0; i <= content.length(); i++) {
  13. end = i;
  14. float measureLength = paint.measureText(content, start, end);//Note3:[start,end)范圍的字符串
  15. if (measureLength >= width) {
  16. mSplitTextParts[index] = content.substring(start, end);//Note4:[start,end)范圍的字符串
  17. start = end;
  18. index++;
  19. }
  20. if (end == content.length()) {
  21. mSplitTextParts[index] = content.substring(start, end);
  22. return Arrays.copyOf(mSplitTextParts, index);//Note5:因為行數判斷的不准確,所以需要清除掉未賦值的null值字符串
  23. }
  24. }
  25. return null;

猜測分割不准的原因是:中英文混雜。可能是半角全角的問題。

測試後發現:

1, 全英文狀態下,半角全角計算的標准行數(未經過1.5倍的余量修正)都ok。

2, 全中文狀態下,半角全角計算的標准行數(未經過1.5倍的余量修正)都ok。

3, 在中英文混雜狀態下,計算的標准行數比實際截取的行數要大。在這裡存疑。有知道的朋友,請留言。

更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11

Copyright © Linux教程網 All Rights Reserved