【问题标题】:Should use "sp" instead of "dp" for text sizes应该使用“sp”而不是“dp”作为文本大小
【发布时间】:2014-07-21 18:53:54
【问题描述】:

当我使用时

android:textSizes="20dp" 

在我的 textView 的 XML 中,我收到一条警告“对于文本大小,应该使用 "sp" 而不是 "dp"。”

为什么不应该使用“dp”?什么是正确的方法?如何在不同的显示器上实现相同的文本大小?

【问题讨论】:

  • sp 是相同的基本单位(与 dp 相同),但按用户首选的文本大小(它是与比例无关的像素)进行缩放,因此在定义时应使用此测量单位文本大小(但从不用于布局大小)Supporting Different Densities.
  • 我知道其中的区别,但我不明白为什么我不能使用 dp 作为字体大小。我的意思是我想在不同的屏幕上具有相同的文本大小,否则在大型显示器上字体会变得非常小。那我怎样才能使文本以相同的大小出现呢?
  • @Rotwang 警告“避免使用小于 12 sp:10sp 的尺寸”
  • 我很惊讶没有人提到 sp 可能会导致不一致的 ui 设计,除非您对其进行非常严格的编码,例如框的高度无法在 dp 中固定,因为它的文本视图在 sp 中。
  • 谁知道用 AS 将所有 textSize dp 转换为 sp 的快速方法?

标签: android android-layout textview


【解决方案1】:

您应该始终将 SP 用于字体,因为它尊重用户的偏好。 Here is an example 让我们通过一个例子来理解它 -

带有 SP 和 DP 的文本

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

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

【讨论】:

  • 我投了反对票,因为“你应该永远”。例如,UX 团队强制开发人员对某些布局(尤其是平板电脑)使用固定的文本大小。这个例子是“只是平板电脑字体大小的两倍”。在这种情况下,dp 指标可以完美运行。
  • @MichałDobiDobrzański 你说的是对的,如果我们不希望字体大小受到用户在设置中设置的影响,我们可以选择 dp,但是我们再次限制用户,(就像给他们一个音乐文件,并限制他们只能以一定的音量播放,即使他们觉得文件最好以一定的音量播放)
  • 在某些情况下,您应该使用 DP 处理文本。一种看待它的方法是,对于 更大 文本(如标题之类的东西),它作为设计的一部分被固定并且无法更改是合理的。例如,有某种带有客户徽标的闪屏和某种大文本的标语或营销标题(想想像书籍封面之类的东西)。 DP 是固定大小,这真的很自然,也可以。它更像是“设计布局”。另一方面,对于用户必须阅读的任何“阅读”文本,将其设为 SP 非常棒。
【解决方案2】:

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

【讨论】:

  • PT 怎么样?
【解决方案3】:

你可以同时使用

sp 用于字体大小
dp 用于其他所有内容。

dp
Density-independent Pixels - 一个基于屏幕物理密度的抽象单位。这些单位与 160 dpi 屏幕相关,因此 1 dp 是 160 dpi 屏幕上的一个像素。 dp与像素的比例会随着屏幕密度而变化,但不一定成正比。注意:编译器同时接受“dip”和“dp”,但“dp”与“sp”更一致。

sp
Scale-independent Pixels - 这类似于 dp 单位,但它也根据用户的字体大小偏好进行缩放。建议您在指定字体大小时使用此单位,以便根据屏幕密度和用户偏好进行调整。

欲了解更多信息,请访问Difference between px, dp, dip and sp in Android?

【讨论】:

    【解决方案4】:

    正如@GiruBhai 所分享的,使用 sp 而不是 dp 来表示文本大小更方便,因为它可以根据用户的喜好进行更改 - 与 dp 不同。这可能会更好地满足您的用户需求。

    更多信息。 :Dimensions in Android

    来源:developer.android.com

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-14
      • 2011-10-29
      • 2015-06-22
      • 1970-01-01
      • 2014-10-09
      • 1970-01-01
      相关资源
      最近更新 更多