关于在代码中使用 text.setTextSize( ) 定义的文字大小不对的问题
问题:
前两天在代码中定义文本大小,使用了
text.setTextSize(aimSize)
此处的 aimSize 使用了 sp2px ()方法进行转换,结果编译出来的文字尺寸太大了。
方法:
在 XML 中对textSize 赋值为 15sp
如果想要在代码中实现一样的大小,不需要使用 sp2px()方法。
可以直接使用text.setTextSize(aimSize),此处的单位就是 sp。
问题原因:
查看 TextView源码可以得知setTextSize()方法有两个重载方法,
只输入大小的话,会默认使用TypedValue.COMPLEX_UNIT_SP作为单位
@android.view.RemotableViewMethod
public void setTextSize(float size) {
    setTextSize(TypedValue.COMPLEX_UNIT_SP, size);
}
public void setTextSize(int unit, float size) {
    if (!isAutoSizeEnabled()) {
        setTextSizeInternal(unit, size, true /* shouldRequestLayout */);
    }
}
如果想不随分辨率改变则可以设定为 dp ,则可以使用
text.setTextSize(COMPLEX_UNIT_ DP, aimSize)
注意:如果是从 xml 中获取到的数据如:
valueSize=a.getDimension(R.styleable.TestCommonChannelDataView_valueSize, defaultValueSize)
此处获取到的数据是 从 SP 单位转换成的 PX 单位
如:xml 中定义的 19sp到了此处获取到的是 57(px)

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号