【问题标题】:Normalized screen size in AndroidAndroid中的标准化屏幕尺寸
【发布时间】:2015-04-17 16:52:25
【问题描述】:

在我的一项活动中,我想根据当前屏幕尺寸调整文本内容的数量。我应该依赖什么指标?

仅以像素为单位的宽度似乎不太可靠,因为字体缩放可能非常不同。另一方面,DisplayMetricsDENSITY_280, DENSITY_400 ... 似乎太宽泛了。是否有任何可用的标准化指标,例如width_in_pixels * font_scaling

以防万一:我的最低 SDK 版本是 15 (4.0.3)

【问题讨论】:

    标签: android fonts size metrics


    【解决方案1】:

    指定文本大小时,始终使用 sp:

    <TextView android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="20sp" />
    

    更多详情herehere

    【讨论】:

      【解决方案2】:

      你可以从 DisblayMetrics 获得像 dpi 这样的值,看这里 docs

      另外,api 中有一个针对不同尺寸指标的内置转换器 TypedValue.applyDimension() ,可用于从 sp 或 dp 获取像素

      【讨论】:

        【解决方案3】:

        您可以查看此链接以了解如何Supporting Multiple Screens on Android

        秘诀是在布局中使用 dp 单位。

        • px 是一个像素。
        • sp 是与比例无关的像素。
        • dp 是与密度无关的像素。

        dp - 与密度无关的像素 - 基于屏幕物理密度的抽象单位。这些单位与 160 dpi 屏幕相关,因此 1 dp 是 160 dpi 屏幕上的一个像素。 dp与像素的比例会随着屏幕密度而变化,但不一定成正比。注意:编译器同时接受“dip”和“dp”,但“dp”与“sp”更一致。

        【讨论】:

        • 我改变了我的答案。请看。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-10
        相关资源
        最近更新 更多