【问题标题】:Different font sizes for different screen sizes不同的字体大小适用于不同的屏幕尺寸
【发布时间】:2011-06-10 11:20:49
【问题描述】:

在我的应用程序中,我必须为中等密度设备使用较小的字体。可以指定吗?

【问题讨论】:

标签: android


【解决方案1】:

你应该使用styles,然后你可以有单独的文件夹“values”(默认)“values-hdpi”(高密度)“values-mdpi”(中等密度)等等,并把你的样式文件正确根据需要在每个文件夹中设置 textSize 值。

然后,当您使用中密度设备时,如果存在,它将在“values-mdpi”文件夹中选择文件,如果不存在,则在“values”中选择文件,对于高密度等也是如此...

同样的原则适用于所有“res”子文件夹(drawables、values 等...)

【讨论】:

  • 请注意,这是错误的。仅使用不同的样式来缩放尺寸是不对的,并且会导致您的应用程序在将来在您未考虑到的密度的设备上运行时中断。正确的做法是使用“dp”单位。
  • 如果我正确理解 Gratzi 的话"I was aware about the usefulness of using dip. I always use this",他想做的是例如为 mdpi 设置一个 textSize 为 12dp,为 hdpi 设置一个 14dp,所以这是实现此目的的方法。此外,对于您不考虑的屏幕密度,还有用于默认值的“值”文件夹...
  • @maid450 您说“并根据需要将具有正确 textSize 值的样式文件放入每个文件夹中。”什么是正确的尺寸?如何计算它们?因为这个公式不是很好用:sp = pt * (dpi /72)
  • 使用屏幕的物理尺寸而不是 DPI 编号更有意义?
  • @hackbod dip 不成比例。它使所有屏幕分辨率下的东西看起来都一样。如果您将 320x480 和 480x800 的设备并排放置并比较 100 dip 它将具有相同的物理尺寸,是的。但是您在 320x480 屏幕上的可用空间仍然较少。因此,使用 dip 或 sp 您仍然需要将尺寸缩小,以适应 320x480 屏幕
【解决方案2】:

使用倾斜度(例如14dp)而不是像素(例如14px)指定所有字体,您无需担心屏幕密度。 Android 会相应地缩放您的字体(和布局)。

编辑:这里是来自the Android docs 的 sp/dp 的比较:

dp Density-independent Pixels - 一个基于屏幕物理密度的抽象单位。这些单位相对于 160 dpi(每英寸点数)的屏幕,因此无论屏幕密度如何,160dp 始终是一英寸。 dp与像素的比例会随着屏幕密度而变化,但不一定成正比。在布局中指定视图尺寸时应使用这些单位,以便 UI 正确缩放以在不同屏幕上以相同的实际尺寸呈现。

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

【讨论】:

  • 如果 Gratzi 不知道,还要在 SP 中指定宽度和高度,而不是像素。下面关于样式的答案是一个很好的提示,可以帮助您管理应用程序的外观和感觉,但 Dave 对使用 DP 指定字体大小很感兴趣。
  • 您也可以使用“sp”作为单位规格,这将相对于用户的首选字体大小进行缩放。编辑:被 CodeAttack 打败 :)
  • 不,使用 dp 单位将使您的尺寸与密度成比例。这是绝对正确的方法。为此使用样式是错误的。它假设您知道您将遇到的所有可能的屏幕密度,但您不知道,因此您的应用程序在未来以新的密度运行时会中断。只需使用 dp。这就是它的用途。
  • 请注意,您还可以通过在文件中指定维度来命名维度(例如 values/dimens.xml)。这样,您可以通过创建其他尺寸文件(例如values-ldpi/dimens.xmlvalues-xhdpi/dimens.xml)为不同的屏幕 DPI 使用不同的 DP 值。这种方法的优点是您可以继续使用 DP/SP 值,同时保留 PX 装置为您提供的明显控制。
  • @hackbod dip 不成比例。它使所有屏幕分辨率下的东西看起来都一样。如果您将 320x480 和 480x800 的设备并排放置并比较 100 dip 它将具有相同的物理尺寸,是的。但是您在 320x480 屏幕上的可用空间仍然较少。因此,使用 dip 或 sp 您仍然必须使内容更小,以适应 320x480 屏幕。
【解决方案3】:

是的,用于实现适用于所有分辨率的通用应用程序。 您应该配置多个可绘制对象和相应的布局。

例如。

绘图:-

可绘制的 ldpi 可绘制的 mdpi 可绘制-hdpi

布局:-

布局-小 布局介质 布局-大

然后您可以根据您对设备所需的分辨率进行更改。 Android 支持内部配置各种屏幕分辨率的密度因子。 设备可以将自己视为适当的可绘制和相应的布局。 您不需要调整 src 文件中的任何代码行。

【讨论】:

    猜你喜欢
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    • 2017-12-11
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多