Code Snipe - 自动换行分隔字符串代码

2018-04-04  本文已影响16人  Jaesoon

自动换行分隔字符串代码

/** 
 * 自动分割文本 
 * @param content 需要分割的文本 
 * @param p  画笔,用来根据字体测量文本的宽度 
 * @param width 最大的可显示像素(一般为控件的宽度) 
 * @return 一个字符串数组,保存每行的文本 
 */  
public String[] autoSplit(String content, TextPaint p, float width) {
    
    if (width <= 0) {
        return null;
    }
    int length = content.length();
    Rect bounds = new Rect();
    p.getTextBounds(content, 0, content.length(), bounds);
    float textWidth = bounds.width();
    if (textWidth <= width) {
        return new String[]{content};
    }

    int start = 0, end = 1, i = 0;
    int lines = (int) Math.ceil(textWidth / width); //计算行数
    String[] lineTexts = new String[lines];
    while (start < length && end < length) {
        if (p.measureText(content, start, end) >= width) {
            lineTexts[i++] = content.substring(start, end - 1);
            start = end - 1;
            end--;
        }
        end++;
    }

    if (i < lineTexts.length)
        lineTexts[i++] = content.substring(start, end);

    return lineTexts;
}
上一篇下一篇

猜你喜欢

热点阅读