Why does a view with 600dp width take up all of my Nexus 5's landscape width?
我在values/dimens.xml中指定按钮的宽度为600dp,但是当我在Nexus 5上部署并运行它时,它会占用横向方向上的所有可用宽度。
我的活动仅在横向模式下运行,正如我在清单文件中指定的那样。 布局位于layouts目录中。 图像位于'drawable-xxhdpi'目录中,它们看起来很好,但我在dp中指定的所有内容都被放大了。
Android Studio和实际设备中的预览似乎表现为它们应该是1920时的最大宽度为600dp。为什么这样,我该如何解决?
-
stackoverflow.com/questions/2025282/…
景观Nexus 5上显示器的物理宽度为1920像素,但是600dp!= 600px。 Nexus 5的显示密度约为445 ppi。 dp是仅中等密度(160ppi)的像素。 因此,dp中指定的所有内容将按比例约为445/160 = 2.78125。 所以600dp实际上大约是1669像素。 这应该占你所看到的大部分内容。
您的布局可能还有一些拉伸按钮。 如果您发布布局xml,我们可能会提供更多信息。
-
啊,对。 因此,在设置为1920x1080之前,我必须在设置dimension.xml之前将每个维度除以该因子吗? 嗯...那么为什么当dp已经在做这个魔术时,需要在values-swXXXXdp目录下有不同的dimens.xml文件,我想知道吗?
-
@ user4092233有关详细信息,请参阅developer.android.com/training/multiscreen/index.html
-
@ user4092233 - 我很少使用不同的dimens.xml文件用于不同的配置,尽管它们有其用途。 例如,您可能需要针对不同屏幕尺寸的不同尺寸。 例如,在大屏幕上,您可能需要在视图周围留出1/2英寸的边距。 因此,无论像素密度如何,您都可以指定80dp的边距(在mdpi设备上为80像素,但在Nexus 5上更像是223像素)。 在较小的屏幕上,您可能只需要1/8英寸的边距,即20dp。 对于与密度无关的尺寸,请使用/res/values-nodpi/dimens.xml和px,而不是dp。