Android中TextView的setTextSize方法

产品中有一个需求是根据TextVIew显示的内容的大小设置字体大小:
// 优惠券金额为三位数时,更改字体大小
if (couponAmunt.length() >= 3) {
    holder.favourItemPriceUnit.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15);
    holder.favourItemPrice.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 30);
} else {
    holder.favourItemPrice.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 36);
    holder.favourItemPriceUnit.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18);
}
在帮TextView控件设置大小的时候,发现和在XML中用PX设置的不一样;由于我们在设置字体大小的时候统一使用的是DP为单位,以前一直以为setTextSize(int size)这里的size参数是以px为单位的,所以这里使用的是setText(dp2px),但是现实的结果一直偏大,后来查询该方法的源码:
/**
     * Set the default text size to the given value, interpreted as "scaled
     * pixel" units.  This size is adjusted based on the current density and
     * user font size preference.
     *
     * @param size The scaled pixel size.
     *
     * @attr ref android.R.styleable#TextView_textSize
     */
    @android.view.RemotableViewMethod
    public void setTextSize(float size) {
        setTextSize(TypedValue.COMPLEX_UNIT_SP, size);
    }
才发现这里使用的是SP为单位,所以后来查询了一个它的重载方法:
setTextSize(int unit, int size)
第一个参数可设置如下静态变量:
TypedValue.COMPLEX_UNIT_PX : Pixels
TypedValue.COMPLEX_UNIT_SP : Scaled Pixels
TypedValue.COMPLEX_UNIT_DIP : Device Independent Pixels

你可能感兴趣的:(Android开发)