字体大小自适应TextView

Android中测量Text的宽度和高度

字体属性及测量——FontMetrics

限制条件:宽度、高度

h = fontMetricsInt.bottom - fontMetricsInt.top; 就是TextView的高度,包含了字高、边距、居中是由布局决定的

打印基线
    private boolean adjustTopForAscent = true;
    private Paint.FontMetricsInt fontMetricsInt;

    @Override
    protected void onDraw(Canvas canvas) {
        //设置是否remove间距,true为remove
        if (adjustTopForAscent) {
            fontMetricsInt = new Paint.FontMetricsInt();
            getPaint().getFontMetricsInt(fontMetricsInt);

            Rect rect = new Rect(0, 0, getWidth(), fontMetricsInt.bottom);
            Log.d("smarking", "onDraw " + rect.toString());
            Paint paint = new Paint();
            paint.setColor(getResources().getColor(R.color.cffff00));
            paint.setStrokeWidth(1);
            canvas.drawRect(rect, paint);

            paint.setColor(getResources().getColor(R.color.colorPrimary));

            canvas.drawLine((float) 0, (float) 0, (float) getWidth(), (float) 0, paint);

            canvas.drawLine((float) 0, -(fontMetricsInt.top - fontMetricsInt.ascent), (float) getWidth(), -(fontMetricsInt.top - fontMetricsInt.ascent), paint);

            canvas.drawLine((float) 0, -(fontMetricsInt.top - fontMetricsInt.leading), (float) getWidth(), -(fontMetricsInt.top - fontMetricsInt.leading), paint);

            canvas.drawLine((float) 0, -(fontMetricsInt.top - fontMetricsInt.descent), (float) getWidth(), -(fontMetricsInt.top - fontMetricsInt.descent), paint);

            canvas.drawLine((float) 0, -(fontMetricsInt.top - fontMetricsInt.bottom), (float) getWidth(), -(fontMetricsInt.top - fontMetricsInt.bottom), paint);

//          canvas.translate(0, -(fontMetricsInt.bottom));
        }
        super.onDraw(canvas);
    }

你可能感兴趣的:(字体大小自适应TextView)