【问题标题】:Should I use dip, dp, sip or sp for text formatting?我应该使用 dip、dp、sip 还是 sp 进行文本格式化?
【发布时间】:2010-11-23 19:51:54
【问题描述】:

我不会说我的应用程序文本很重...但它有时会显示比其他更长的随机字符串。它们在我的 droid 2 上很合适,但我知道它们在较小的 droid 上显示不一样。有谁知道格式化不同大小的文本以确保它适用于所有机器人的正确方法?

【问题讨论】:

  • 定义工作。它适用于所有机器人。这仅取决于您希望它如何显示。

标签: android text formatting size density-independent-pixel


【解决方案1】:

如果你只是想让一些文本更大或更小,你应该更喜欢使用 Android 提供的默认样式:

<TextView ... android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView ... android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView ... android:textAppearance="?android:attr/textAppearanceSmall" />

它们都不是默认的,默认是:

<TextView ... android:textAppearance="?android:attr/textAppearance" />

它肯定不仅可以应用于TextView,还可以应用于其他视图。

【讨论】:

    【解决方案2】:

    Google 建议使用 sp 作为文本大小尺寸。您使用的布局将需要正常工作,因此当布局缩放时,它可以在所有尺寸下尽可能地工作(您可能需要针对不同尺寸的屏幕进行布局)。如果文本可能不合适,请将其换行或椭圆化

    【讨论】:

      【解决方案3】:

      SP 和 DP 似乎不像您预期​​的那样工作。 DP应该是“显示独立”的,SP也是这样描述的;但可以缩放(大概是通过“缩放”命令)。 但是,它们并不像您预期​​的那样工作。

      例如,我有两部设备,一部 320x480 手机和一部 Nexus;这是 800x1280 但将自己描述为 sw600 (我不知道为什么)。 为了查看发生了什么,我在视图中添加了一个文本视图,它由 60 个“X”字符组成(之所以选择这些字符是因为它们看起来与等宽字符相同)。

      textView textSize 设置为 10dp,其中 60 个完全填满了 Nexus 屏幕。 但是,它们在手机上的显示尺寸完全相同,几乎形成了两条线。

      因此,DP 似乎不是独立于显示的;但仅描述了每个字符将最多给出的(近似)像素数。 在 SP 中定义维度没有区别。

      这不是很有帮助 - 我期待应用某种形式的缩放,所以我可以在我的手机上选择合适的尺寸,它会为 Nexus 缩放。

      例如,如果我的文本行大约有 30 个字符长,并且我希望它在屏幕上占满一整行,我会将其定义为 10dp;每个 dp 将是一个像素(大约)。然后,当它在 Nexus 上绘制时,每个 dp 将是两个像素,它会出现两倍的大小。

      据我所知,这不是它的工作方式;这让它变得毫无用处。

      我唯一的解决方案,它不是一个优雅的解决方案,是只使用 dimens.xml 文件中的尺寸,并有六个,每个常用宽度(240,320,480,600,720,800 -任何更高的东西都可以自行解决),然后设计我的代码以适合 Nexus,并使用我编写的电子表格来缩放 dimens.xml 中的任何值以获得常见宽度。 这是一种痛苦;但它有效。

      除非我用错了,否则安卓系统就是坏了。

      【讨论】:

        猜你喜欢
        • 2014-07-21
        • 2011-01-02
        • 2013-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-06
        • 2020-06-06
        相关资源
        最近更新 更多