Android compose有textSize单位em,但没有dp。“em”是什么?em、sp和dp之间有什么区别?为什么没有dp?如何从其他单位转换为em?
Text(text = "Hello",fontSize = 5.em)
zwghvu4y1#
在fontSize中,EM或em代表“相对字体大小”。1.em = 100%因此在您的情况下Text(text = "Hello",fontSize = 5.em)是正常文本大小的500%,即原始大小x 5。同样,SP或sp代表“缩放像素”,因此您可以编写Text(text = "Hello",fontSize = 30.sp)
Text(text = "Hello",fontSize = 30.sp)
juud5qan2#
条款:
Jetpack Compose采用了更好的保护方法,不允许您在dp中指定字体大小。这是因为如果您执行了类似10.dp的操作,则依赖于较大文本大小的用户将无法阅读文本,无论他们在系统设置中将其首选项设置为多大。Jetpack Compose中的文本大小通过TextUnit传递。当你执行类似fontSize = 1.1em的操作时,你触发了一个扩展方法,该方法为你创建了一个TextUnit,但它没有任何像素大小。直到有了一个TextStyle(它指定了所需的字体属性),才知道大小。问一个给定的em值有多少dp或sp可以等同于问50%有多大?下一个问题是什么的50%?
fontSize = 1.1em
2条答案
按热度按时间zwghvu4y1#
在fontSize中,EM或em代表“相对字体大小”。1.em = 100%因此在您的情况下
Text(text = "Hello",fontSize = 5.em)
是正常文本大小的500%,即原始大小x 5。
同样,SP或sp代表“缩放像素”,因此您可以编写
Text(text = "Hello",fontSize = 30.sp)
juud5qan2#
条款:
Jetpack Compose采用了更好的保护方法,不允许您在dp中指定字体大小。这是因为如果您执行了类似10.dp的操作,则依赖于较大文本大小的用户将无法阅读文本,无论他们在系统设置中将其首选项设置为多大。
Jetpack Compose中的文本大小通过TextUnit传递。当你执行类似
fontSize = 1.1em
的操作时,你触发了一个扩展方法,该方法为你创建了一个TextUnit,但它没有任何像素大小。直到有了一个TextStyle(它指定了所需的字体属性),才知道大小。问一个给定的em值有多少dp或sp可以等同于问50%有多大?下一个问题是什么的50%?