kotlin android编写器文本大小单位为em

iklwldmw  于 2022-11-16  发布在  Kotlin
关注(0)|答案(2)|浏览(308)

Android compose有textSize单位em,但没有dp。“em”是什么?em、sp和dp之间有什么区别?为什么没有dp?如何从其他单位转换为em?

Text(text = "Hello",fontSize = 5.em)
zwghvu4y

zwghvu4y1#

在fontSize中,EM或em代表“相对字体大小”。1.em = 100%因此在您的情况下
Text(text = "Hello",fontSize = 5.em)
是正常文本大小的
500%
,即原始大小x 5
同样,SP或sp代表“缩放像素”,因此您可以编写
Text(text = "Hello",fontSize = 30.sp)

juud5qan

juud5qan2#

条款:

  • dp -与密度无关的像素-这是根据设备的密度自动缩放的像素值
  • sp -可缩放像素-类似于dp,但也根据用户的文本偏好进行缩放(例如,可访问性设置以增加字体大小)
  • em -与磅值相比的相对值(例如,如果您有12磅字体,则12磅为1 em)

Jetpack Compose采用了更好的保护方法,不允许您在dp中指定字体大小。这是因为如果您执行了类似10.dp的操作,则依赖于较大文本大小的用户将无法阅读文本,无论他们在系统设置中将其首选项设置为多大。
Jetpack Compose中的文本大小通过TextUnit传递。当你执行类似fontSize = 1.1em的操作时,你触发了一个扩展方法,该方法为你创建了一个TextUnit,但它没有任何像素大小。直到有了一个TextStyle(它指定了所需的字体属性),才知道大小。
问一个给定的em值有多少dp或sp可以等同于问50%有多大?下一个问题是什么的50%?

相关问题