【问题标题】:Scale TextView size according to dpi and resolution根据 dpi 和分辨率缩放 TextView 大小
【发布时间】:2015-04-25 05:39:19
【问题描述】:

如何选择文本大小以使其在每台设备上看起来都一样?我觉得这是一个不可能完成的任务,可能你会说我应该为每个 dpi 设置不同的值,但这并不能解决问题,因为有些手机的 dpi 相同但屏幕分辨率不同,最后它没有看起来不一样。任何人都可以在这里帮助我吗?

【问题讨论】:

    标签: android layout textview size


    【解决方案1】:

    Android 指南建议对文本使用 SP 维度:http://developer.android.com/training/multiscreen/screendensities.html

    SP 尺寸取决于屏幕密度以及用户偏好。假设用户将他的手机配置为大字体(例如视力问题),您的应用程序将可供该用户访问。

    实际上它看起来像这样:textSize="16sp"

    【讨论】:

    • 一点用都没有。
    • 您正在尝试做的是违背最佳实践。我建议重新考虑一下。但是,如果您仍然想这样做,请在此处查看如何获取屏幕尺寸stackoverflow.com/questions/1016896/… 一旦您有了屏幕尺寸,您可以轻松地将其计算为不同密度/屏幕上所有字体的“相同”尺寸决议。
    • 为什么违反最佳实践?
    • 我在回答中提到过。通过使用 sp 维度,用户可以配置字体大小。这是可访问性的最佳做法(例如有视力问题的人)
    • 这让游戏看起来很丑,因为在不同的设备上文本大小不适合图像大小等等
    【解决方案2】:

    如果您坚持在每台设备上使用相同的外观,您可以管理不同设备上的一些细节。查看网页Display classWindowManager。这是我用于某个 UI 元素的示例代码:

    Display display = getActivity().getWindowManager().getDefaultDisplay();
    Point size = new Point();
    display.getSize(size);
    

    祝你好运。管理所有图形并不容易。

    【讨论】:

    • 使用权重嵌套 LinearLayouts 使得除了文本大小之外的所有内容都非常简单,这对我来说是最难的部分。我试试这个,谢谢。
    猜你喜欢
    • 2012-11-04
    • 1970-01-01
    • 2017-06-11
    • 2019-11-13
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    相关资源
    最近更新 更多