【问题标题】:Automatic text size scaling by dimension's value按尺寸值自动缩放文本大小
【发布时间】:2017-05-22 22:28:22
【问题描述】:

我有一组维度文件,例如:

\res\values-normal-xxhdpi\dimens.xml

<!-- Default screen margins, per the Android Design guidelines. -->
<string name="dimention_id">normal-xxhdpi</string>
<dimen name="activity_margin">8dp</dimen>
<dimen name="big_text_size">8sp</dimen> 
<dimen name="mid_text_size">5sp</dimen> 
<dimen name="small_text_size">3sp</dimen>
<dimen name="logo_size">100dp</dimen>
<dimen name="button_height">55dp</dimen>
<dimen name="button_width">200dp</dimen>
<dimen name="panel_counter_width">190dp</dimen>

当我通过Context.getResources().getDimension(R.dimen.mid_text_size) 加载此尺寸时,我收到“mid_text_size”等于 20。

我确定它是正确的文件,因为将值 5 更改为其他值将在应用程序中出现更改。

为什么它从 5 扩展到 20?

【问题讨论】:

    标签: java android resources dimensions


    【解决方案1】:

    函数Resources.getDimenstion(int) 的文档说明:

    资源维度值乘以适当的指标。

    因此,如果您检查DisplayMetrics.scaledDensity,它可能会显示值 4。

    请记住,sp 是一个相对值,应该确保字体在所有屏幕尺寸、尺寸和分辨率上看起来都一样。

    建议你阅读units used in Android environment的理论

    【讨论】:

    • 是的,它解决了我的问题。浮动维度 = getContext().getResources().getDimension(R.dimen.mid_text_size); DisplayMetrics 指标 = getContext().getResources().getDisplayMetrics();浮动 scale_index = metrics.scaledDensity;维度=维度/比例索引;有趣的是,当我们在布局中设置尺寸值时,它对每个可用的布局文件都很简单。但是当我们使用 getDimentions() 函数时,我们必须测试 metrics.scaledDensity 值。谢谢。
    猜你喜欢
    • 2012-03-31
    • 2018-07-17
    • 1970-01-01
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多