【问题标题】:Android font size on different screens不同屏幕上的 Android 字体大小
【发布时间】:2013-04-29 20:32:29
【问题描述】:

我想为不同的屏幕尺寸使用不同的字体大小。

我阅读了很多文章,但我不确定使用情况。对不同的屏幕尺寸使用不同的尺寸资源文件是正确的,如下面的代码:

res/values/dimens.xml
res/values-small/dimens.xml
res/values-normal/dimens.xml
res/values-xlarge/dimens.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <dimen name="text_size">18sp</dimen>
</resources>

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <dimen name="text_size">24sp</dimen>
</resources>
...

我还读到正确的方法是使用sp 作为字体大小,但这并不适合我期望的不同屏幕尺寸的字体。

如果有,对每种尺寸使用不同尺寸的缺点是什么?

谢谢

【问题讨论】:

    标签: android


    【解决方案1】:

    最好的方法是为您希望支持的每个屏幕创建不同的布局资源。将每个布局放在指定屏幕宽度的单独文件夹中。例如,正常大小的布局放在 res/layout 文件夹中,7 英寸平板电脑(600 像素宽)的布局资源放在 res/layout-sw600dp 文件夹中。使资源名称相同,但相应地调整字体大小。

    【讨论】:

    • 如果您这样做只是为了实现字体大小的更改,那么您最终会无缘无故地得到大量重复的 AXML,然后每次更改 UI 时都必须维护这些 AXML。 Dimens 与线性布局相结合似乎是一种不那么费力的方法。
    【解决方案2】:

    @up 不,这不是好方法。

    @topic 你可以获取屏幕的宽度和高度(以及视图的宽度和高度)。接下来,您可以设置字体,例如屏幕宽度的 2%。如果你有内容 1260x720, 0.02*1260=24,6 px(你也可以使用 (int)24.6 将 double 转换为 int)

    【讨论】:

      【解决方案3】:

      我做了一些非常相似的事情,对我来说效果很好。有些人将值放在各种布局中,例如 Fietser 建议的,但是如果您的所有布局最终除了字体大小之外都完全相同,那么您的方法会更好。这样你就可以有一个单一的布局,只修改字体大小。但有时您可能会在实际布局 xml 中发生变化,所以这可能是两种方法之间的一种清洗。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-12
        • 1970-01-01
        • 2020-09-20
        • 2011-06-29
        • 1970-01-01
        • 2011-06-10
        • 2016-09-10
        • 2012-09-05
        相关资源
        最近更新 更多