【问题标题】:Why does a view with 600dp width take up all of my Nexus 5's landscape width? [duplicate]为什么 600dp 宽度的视图占据了我的 Nexus 5 的所有横向宽度? [复制]
【发布时间】:2014-11-24 05:24:00
【问题描述】:

我在values/dimens.xml 中将按钮的宽度指定为 600dp,但是当我在 Nexus 5 上部署和运行它时,它会占用横向方向的所有可用宽度。

我的活动只在横向模式下运行,正如我在清单文件中指定的那样。布局位于layouts 目录中。这些图像位于“drawable-xxhdpi”目录中,它们看起来很好,但我在dp 中指定的所有内容都被放大了。

Android Studio 和实际设备中的预览似乎在 1920 时的最大宽度为 600dp。为什么会这样,我该如何解决?

【问题讨论】:

标签: android android-layout android-activity android-screen-support


【解决方案1】:

横向 Nexus 5 显示器的物理宽度为 1920 像素,但是 600dp != 600px。 Nexus 5 的显示密度约为 445 ppi。 dp 是仅中等密度 (160 ppi) 的像素。因此,在 dp 中指定的所有内容都将按大约 445/160 = 2.78125 的系数进行缩放。所以 600dp 实际上大约是 1669 像素。这应该可以解释您所看到的大部分内容。

您的布局也可能会拉伸按钮。如果您发布您的布局 xml,我们或许可以提供更多信息。

【讨论】:

  • 啊,对。因此,鉴于我的设计为 1920x1080,我必须在设置 dimens.xml 之前将每个维度除以该因子?嗯...那么为什么在dp 已经在做这个魔术时,values-swXXXXdp 目录下需要有不同的dimens.xml 文件,我想知道吗?
  • @user4092233 - 我很少将不同的dimens.xml 文件用于不同的配置,尽管它们有其用途。例如,您可能希望针对不同的屏幕尺寸使用不同的尺寸。例如,在大屏幕上,您可能需要在视图周围留出 1/2 英寸的边距。因此,无论像素密度如何,您都可以指定 80dp 的边距(在 mdpi 设备上为 80 像素,但在 Nexus 5 上更像是 223 像素)。在较小的屏幕上,您可能只需要 1/8 英寸的边距,即 20dp。对于与密度无关的尺寸,请使用/res/values-nodpi/dimens.xml 和 px,而不是 dp。
猜你喜欢
  • 2020-02-07
  • 1970-01-01
  • 2011-07-01
  • 2018-01-15
  • 2013-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-30
  • 1970-01-01
相关资源
最近更新 更多