字体大小自适应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);
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容