应该使用“sp”而不是“dp”来设置文本大小

31

当我使用时

android:textSizes="20dp" 

在我的XML文件中,针对一个textView,我收到了一个警告:"应该使用"sp"而不是"dp"来定义文本大小。"

为什么不能使用"dp"? 正确的方法是什么?如何实现在不同屏幕上相同的文本大小?


3
SP与DP是同一基本单位,但会根据用户首选字体大小进行缩放(它是独立于缩放比例的像素),因此在定义文本大小时应使用此测量单位(但不要用于布局大小)。 - Onik
1
我知道它们的区别,但我不明白为什么我不能使用dp来设置字体大小。我的意思是,我希望在不同的屏幕上拥有相同的文本大小,否则在大屏幕上字体会变得非常小。那么如何实现文本以相同的大小显示呢? - Peter Panne
@Rotwang,关于警告“避免使用小于12 sp的尺寸:10sp”,您怎么看? - pukingminion
3
除非你严格编写代码,否则 sp 可能会导致 UI 设计不一致,这一点让我感到惊讶,因为没有人提到过。例如,如果文本视图使用 sp,则框的高度不能固定在 dp 中。 - 林果皞
1
有谁知道在AS中将所有textSize dp快速转换为sp的方法? - Dennis Anderson
我完全同意。如果用户选择更大的字体大小,SP可能会使您的布局出现问题。我宁愿显示所有内容,也不要一个更大的字体但有很多截断... - joe1806772
3个回答

47

您应该始终使用SP字体,因为它尊重用户的偏好。 这里是一个例子 让我们通过一个例子来理解 -

使用SP和DP的文本

进入图像描述

更改设备文本设置(设置->显示->字体大小)

进入图像描述

现在重新打开应用程序并查看文本,您会发现使用SP的文本与DP的高度不同。

进入图像描述


11
我给你点踩是因为“你应该总是”这句话。例如,用户体验团队要求开发人员在某些布局(尤其是平板电脑上)使用固定字号。一个例子是“在平板电脑上将字体大小加倍”。在这种情况下,dp度量单位非常适合。 - Michał Dobi Dobrzański
1
@MichałDobiDobrzański 你说的是正确的,如果我们不希望字体大小受用户设置的影响,我们可以选择dp,但是我们又在限制用户,就像给他们一个音乐文件,限制他们只能以某个音量播放,即使他们觉得该文件最适合以某个音量播放一样。 - Sreekanth Karumanaghat
有明显的时候你应该使用DP来处理文本。一种看待它的方式是,对于较大的文本——例如标题——将其作为设计的一部分固定下来并且不能更改是合理的。例如,客户端标志和某些标语或营销标题以大字体呈现(类似于书籍封面)。这是非常自然和可以接受的,使用DP来固定大小,就像“设计布局”一样。另一方面,对于用户需要阅读的任何“阅读”文本,最好使用SP。 - Fattie

29

您可以使用sp和dp。正如您所知,在Android设置中,您可以更改文本大小(设置->我的设备->显示->字体大小)。在更改设置中的字体大小后,所有使用sp的textView都会更改,而使用dp的不会更改。


PT 是什么? - Yousha Aleayoub

0

正如@GiruBhai所分享的,对于文本大小来说,使用sp比dp更方便,因为它可以根据用户的偏好进行更改,而不像dp那样固定。这可能更好地满足您的用户需求。

更多信息:{{link1:Android中的尺寸}}

来源:developer.android.com


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接