zoukankan      html  css  js  c++  java
  • Android开发之TextView排版问题

    下面直接是关于解决该问题的代码(根据别人的代码进行了修正以及测试,保证可以修改字体尺寸、颜色、根据padding调整,如果需要支持其他的格式可以将对应的属性添加至Paint类型的对象中):

     
     1 public class NsTextView extends TextView {
     2     private String text;
     3     private float textSize;
     4     private float paddingLeft;
     5     private float paddingRight;
     6     private int textColor;
     7     private Paint paint1 = new Paint();
     8     private float textShowWidth;
     9 
    10     public NsTextView(Context context, AttributeSet attrs) {
    11         super(context, attrs);
    12         text = this.getText().toString();
    13         textSize = this.getTextSize();
    14         textColor = this.getTextColors().getDefaultColor();
    15         paddingLeft = this.getPaddingLeft();
    16         paddingRight = this.getPaddingRight();
    17         paint1.setTextSize(textSize);
    18         paint1.setColor(textColor);
    19         paint1.setAntiAlias(true);
    20     }
    21 
    22     @Override
    23     protected void onDraw(Canvas canvas) {
    24         textShowWidth = this.getMeasuredWidth() - paddingLeft - paddingRight;
    25         int lineCount = 0;
    26         text = this.getText().toString();
    27         if (text == null)
    28             return;
    29         char[] textCharArray = text.toCharArray();
    30         float drawedWidth = 0;
    31         float charWidth;
    32         for (int i = 0; i < textCharArray.length; i++) {
    33             charWidth = paint1.measureText(textCharArray, i, 1);
    34             if (textCharArray[i] == '
    ') {
    35                 lineCount++;
    36                 drawedWidth = 0;
    37                 continue;
    38             }
    39             if (textShowWidth - drawedWidth < charWidth) {
    40                 lineCount++;
    41                 drawedWidth = 0;
    42             }
    43             canvas.drawText(textCharArray, i, 1, paddingLeft + drawedWidth,
    44                     (lineCount + 1) * textSize, paint1);
    45             drawedWidth += charWidth;
    46         }
    47         setHeight((int) ((lineCount + 1) * (int) textSize ));
    48     }
    49 }
  • 相关阅读:
    20145307陈俊达《网络对抗》Exp6 信息搜集与漏洞扫描
    20145307陈俊达《网络对抗》Exp5 MSF基础应用
    微服务负载均衡 —— ribbon
    微服务注册与发现 —— eureka
    shiro
    unix网络编程——I/O多路复用之epoll
    unix网络编程——TCP套接字编程
    java异常处理及自定义异常的使用
    磁盘调度算法寻道问题
    关于mybatis的思考(3)——ResultMaps的使用
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/4502462.html
Copyright © 2011-2022 走看看