Android 中的大小单位是如何应用的?

How size units in Android are applied?

在axml文件中添加视图时,可以简单地指定视图属性的大小和单位,例如:

<TextView
    android:TextSize = "10sp"
    android:layout_marginTop = "10dp" />

但是当以编程方式应用尺寸时,尺寸 sp 应用的单位是什么? DP?像素?

TextView tv = new TextView();
tv.TextSize = 10;

另外,如何换算单位?

spTextView.TextSize 的默认值:

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.`

如果您需要不同的单位类型 (ComplexUnitType),请使用 SetTextSize 方法:

textview.SetTextSize(ComplexUnitType.Px, 20);

一位朋友刚刚回答我,默认情况下 Android 使用 "sp" 作为文本大小,使用 "px" 作为视图大小,但是可以这样转换单位:

TextView tv = new TextView();
tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, 10); // Sets text in px (Pixel).
tv.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 10); // Sets text in dip (Device Independent Pixels).
tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 10); // Sets text in sp (Scaled Pixel).
tv.setTextSize(TypedValue.COMPLEX_UNIT_PT, 10); // Sets text in pt (Points).
tv.setTextSize(TypedValue.COMPLEX_UNIT_IN, 10); // Sets text in in (inches).
tv.setTextSize(TypedValue.COMPLEX_UNIT_MM, 10); // Sets text in mm (millimeters).
``