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

来源:互联网 发布:软件著作权代办 编辑:程序博客网 时间:2024/06/06 05:19

本文转自:http://blog.csdn.net/u010246789/article/details/51396351

一、问题:自定义控件和原生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
原创粉丝点击