px : 其实就是像素单位,比如我们通常说的手机分辨列表800*400都是px的单位
sp : 同dp相似,还会根据用户的字体大小偏好来缩放
dp : 虚拟像素,在不同的像素密度的设备上会自动适配
dip: 同dp
由此可以看出使用sp作为字体大小单位,会随着系统的字体大小改变,而dp作为单位则不会。 而 dp 也叫 dip,是 device independent pixels
1.dp、sp、px的TextView XML代码如下:
<TextView
android:text="Hello World!"
android:layout_width="150dp"
android:layout_height="wrap_content"
tools:ignore="MissingConstraints" />
<TextView
android:text="Hello World!"
android:layout_width="150sp"
android:layout_height="wrap_content"
tools:ignore="MissingConstraints" />
<TextView
android:text="Hello World!"
android:layout_width="150px"
android:layout_height="wrap_content"
tools:ignore="MissingConstraints" />
2.接下来是dp、sp、px的Button XML的代码:
<Button
android:text="Hello World!"
android:layout_width="200dp"
android:layout_height="wrap_content"
tools:ignore="MissingConstraints" />
<Button
android:text="Hello World!"
android:layout_width="200sp"
android:layout_height="wrap_content"
tools:ignore="MissingConstraints" />
<Button
android:text="Hello World!"
android:layout_width="200px"
android:layout_height="wrap_content"
tools:ignore="MissingConstraints" />
因此通常情况下,我们还是建议使用sp作为字体的单位,除非一些特殊的情况,不想跟随系统字体变化的,可以使用dp