android - 为什么 600dp 宽度的 View 占据了我的 Nexus 5 的所有横向宽度?

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

<分区>

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

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

Android Studio 中的预览和实际设备的行为似乎是它们的最大宽度为 600dp,而实际宽度应该是 1920。这是为什么,我该如何解决?

最佳答案

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

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

关于android - 为什么 600dp 宽度的 View 占据了我的 Nexus 5 的所有横向宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26106320/

相关文章:

android - 在父 View 上触摸或调用 setPressed() 会更改 TextView 的可见性

android - 关闭服务中的 Activity

android - 将数据发布到服务器并在服务器端读取

android - 自定义列表项的布局问题

android - 无法解析符号 '?selectableItemBackgroundBorderless'

java - 如何通过单击按钮打开新 Activity ?

java - Android——启动一个新的 Activity 时杀死多个以前的 Activity

php - 从 is_mobile 中排除 iPad 和平板电脑

android - 在Android上使用XStream时如何注释order字段?

android - 使用 `Screen`(ES6)时如何在 `TabNavigator`中设置Params?