2

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

4

3 回答 3

6

如果你只是想让一些文本更大或更小,你应该更喜欢使用 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其他视图。

于 2010-11-23T20:38:26.033 回答
3

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

于 2010-11-23T20:18:37.120 回答
0

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

例如,我有两个设备,一个 320x480 的手机和一个 Nexus;这是 800x1280 但将自己描述为 sw600 (我不知道为什么)。为了查看发生了什么,我在视图中添加了一个 textview,它由 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-11-13T15:17:19.373 回答