自定义控件中setText()设置字体相同大小无法与原生控件一致

来源:互联网 发布:台湾网络电视tv版 编辑:程序博客网 时间:2024/06/06 10:47

一、问题:自定义控件和原生TextView中都设置字体大小为10sp,为什么显示的差异会这么大?


二、剖析:(1)经过debug发现,设置的10sp,到后台后变成了30;手机是1080*1920的,所以在这里已经是被转成像素后的大小。

对分辨率及比例不是很了解的,可以简单参考下图:

(2)为什么原生TextView不会有问题呢?于是就跟了下TextView的源码,发现:
    private void setRawTextSize(float size) {        if (size != mTextPaint.getTextSize()) {            mTextPaint.setTextSize(size);            if (mLayout != null) {                nullLayouts();                requestLayout();                invalidate();            }        }    }
三、解决:最后是设置的Paint的大小,于是做如下修改:
        textView.setText(text);//        textView.setTextSize(textSize);        textView.getPaint().setTextSize(textSize);
效果图:





0 0