//将textview中的文字进行排版private String autoSplitText(final TextView tv) {    final String rawText = tv.getText().toString(); //原始文本    final Paint tvPaint = tv.getPaint(); //paint,包含字体等信息    final float tvWidth = tv.getWidth() - tv.getPaddingLeft() - tv.getPaddingRight(); //控件可用宽度    //将原始文本按行拆分    String [] rawTextLines = rawText.replaceAll("\r", "").split("\n");    StringBuilder sbNewText = new StringBuilder();    for (String rawTextLine : rawTextLines) {        if (tvPaint.measureText(rawTextLine) <= tvWidth) {            //如果整行宽度在控件可用宽度之内,就不处理了            sbNewText.append(rawTextLine);        } else {            //如果整行宽度超过控件可用宽度,则按字符测量,在超过可用宽度的前一个字符处手动换行            float lineWidth = 0;            for (int cnt = 0; cnt != rawTextLine.length(); ++cnt) {                char ch = rawTextLine.charAt(cnt);                lineWidth += tvPaint.measureText(String.valueOf(ch));                if (lineWidth <= tvWidth) {                    sbNewText.append(ch);                } else {                    sbNewText.append("\n");                    lineWidth = 0;                    --cnt;                }            }        }        sbNewText.append("\n");    }    //把结尾多余的\n去掉    if (!rawText.endsWith("\n")) {        sbNewText.deleteCharAt(sbNewText.length() - 1);    }    return sbNewText.toString();}
 

使用方法:

String s =  autoSplitText(tv);tv.setText(s);

 

 

 

 

 

 

更多相关文章

  1. android中获取一个xml布局中一个控件的宽高.
  2. Android和Java判断字符串是否是中文
  3. Android 中日期控件与下拉列表的使用
  4. Android中在Button控件上显示倒计时
  5. Android SwipeMenuRecyclerView控件的用法
  6. Android 自定义布局控件-圆形RelativeLayout
  7. 自定义控件:滑动开关按钮
  8. android九宫格锁屏控件
  9. 自定义控件:瀑布流水字母

随机推荐

  1. android 笔记 --- 属性gravity与layout_g
  2. Android属性gravity与layout_gravity的区
  3. 用PHP编写Android应用程序
  4. Android(安卓)Trick 7: 把TextView中的文
  5. Android消息机制浅析——面试总结
  6. 《Android移动应用基础教程》(Android(安
  7. Android内核开发:开发板选购
  8. Android(安卓)ADT插件配置
  9. 将要更新到android 4.0的手机列表
  10. Android调用WCF