TextView,很常见的控件。关于文字大小的方法有:
android.widget.TextView#getTextSize 返回值的单位是PX
/** * @return the size (in pixels) of the default text size in this TextView. */ @ViewDebug.ExportedProperty(category = "text") public float getTextSize() { return mTextPaint.getTextSize(); }
android.widget.TextView#getScaledTextSize 返回值单位是SP
/** * @return the size (in scaled pixels) of thee default text size in this TextView. * @hide */ @ViewDebug.ExportedProperty(category = "text") public float getScaledTextSize() { return mTextPaint.getTextSize() / mTextPaint.density; }
android.widget.TextView#setTextSize(float) 参数的单位是SP
/** * 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); }
android.widget.TextView#setTextSize(int, float) 参数的单位是两个,第一个是单位,第二个是数值
/** * Set the default text size to a given unit and value. See {@link * TypedValue} for the possible dimension units. * * @param unit The desired dimension unit. * @param size The desired size in the given units. * * @attr ref android.R.styleable#TextView_textSize */ public void setTextSize(int unit, float size) { Context c = getContext(); Resources r; if (c == null) r = Resources.getSystem(); else r = c.getResources(); setRawTextSize(TypedValue.applyDimension( unit, size, r.getDisplayMetrics())); }
总结:
- get方法,注意返回值的单位
- set方法,注意参数的单位
补充
在自定义控件中使用自定义属性时,经常需要使用java代码获取在xml中定义的尺寸,相关有以下三个函数
- getDimension()
- getDimensionPixelOffset()
- getDimensionPixelSize()
它们三个返回值的单位都是:PX