嗨,@Daniel,如果您以编程方式生成以下代码的文本视图
TextView tv = new TextView();
tv.setTextSize(10); // Sets text in sp (Scaled Pixel).
如果您想使用其他单位设置文本大小,则可以按照以下方式实现。
TextView tv = new TextView()
tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, 10)
tv.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 10)
tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 10)
tv.setTextSize(TypedValue.COMPLEX_UNIT_PT, 10)
tv.setTextSize(TypedValue.COMPLEX_UNIT_IN, 10)
tv.setTextSize(TypedValue.COMPLEX_UNIT_MM, 10)
默认情况下,Android使用“sp”作为文本大小单位,“px”作为视图大小单位。
对于其他视图大小,我们可以使用像素(px)进行设置,但如果您想自定义单位,则可以使用自定义方法。
public static int convertDipToPixels(Context context, int dip) {
if (context == null)
return 0;
Resources resources = context.getResources();
float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dip, resources.getDisplayMetrics());
return (int) px;
}
从上述方法中,您可以将YOUR_DESIRED_UNIT转换为像素,然后设置到视图中。根据您的用例,可以将
TypedValue.COMPLEX_UNIT_DIP
替换为上述单位。您也可以反过来使用px转换为dip,但是我们不能将自定义单位分配给视图,因此我这样使用它。我希望我解释得很清楚。
sp
来改变字体大小,你可以使用其他重载来指定单位。 - Pawel