gpt4 book ai didi

android - Dimen 值未按预期工作

转载 作者:行者123 更新时间:2023-11-29 16:09:08 26 4
gpt4 key购买 nike

我无法理解 dimen 资源属性。

我有 3 个值文件夹:value-normal、value-large 和 value-xlarge。

我已经将标题大小定义为正常 20,大 25,超大 30,这是我的正常值文件:

<resources>
<dimen name="titleSize">20sp</dimen>
</resources>

但是当我尝试获取这个值时

Resources r = getResources();
tvTitleSize = r.getDimension(R.dimen.titleSize);

tvTitleSize 等于 40,这与大不符。为什么值(value)是原来的两倍,我该如何解决这个问题?

Ps:我的设备是galaxy nexus。

最佳答案

如果您阅读 docs of Resource.getDimension()方法,你会发现这个:

Resource dimension value multiplied by the appropriate metric.

换句话说,您获得的是设备的实际尺寸(以像素为单位)。

sp 是与密度无关的值。该值对应的是mdpi,但Galaxy Nexus是xhdpi,密度是mdpi的两倍。这就是为什么你得到 20 * 2 = 40;

如果您想知道哪里出了问题,那么答案是什么都没有。你得到的尺寸是正确的。 ldpi/mdpi/hdpi/xhdpi 设备的实际文本大小不同。

例如 16dp 意味着:

  • 在 ldpi 上为 12px
  • 在 mdpi 上为 16px
  • 在 hdpi 上 24px
  • xhdpi 为 32px

spdp 的区别在于sp 受用户对字体大小偏好的影响。

关于android - Dimen 值未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14952778/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com