首选我们找到 源码中的TextView 找到 textsize 属性 一个 int 类型默认值为 15 初使化自定义属性: 我们看一个 getDeimensionPixelSize()方法的解释可以看出 获取 是 15 单位是什么 是px 那我们在代码中给TextView设置 大小的时候 单位是什么呢?
最终设置值 的是 setRawTextSize() 而 setRawTextSize() 的参数 又调用了 Typevalue.appDimension() 我们进入 这个方法: 我们可以看到返回的是 一个把sp 换成了 px 也就是说 我们在代码中用setTextSize() 方法 设置的文字大小的单位是 sp 而最终 还是把 sp 转换成了 px 去设置的。 通过上面的方法 我们是不是也可以写一个sp转px的方法
/** * * @param value * @return 以px 为单位的值 */ public float sp2px(float value) { float dimension = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, value, getResources().getDisplayMetrics()); return dimension; }