【发布时间】:2020-07-24 22:24:17
【问题描述】:
我正在开发一个应用,但我的约束布局与任何屏幕尺寸都不兼容。
我有一个宽度和高度如下的按钮:
android:layout_width="283dp"
android:layout_height="57dp"
Here's 使用 Google Pixel 的外观。 还有here's 使用 Nexus S 的样子
我还将 apk 发送给了一个拥有 Galaxy J7 (1280x720, 5.5') 的人,但我的按钮、文本视图和图像视图不能很好地适应屏幕,就像 Nexus S (800x480, 4') .
在阅读了文档和其他资源之后,我了解到我可以为不同的屏幕创建不同的布局(例如,hdpi,Nexus S 就是这种情况)。
但看起来问题更多与显示英寸有关,而不是与设备 dpi 相关。 因为 Nexus S 具有 800x480、hdpi 和 4' 屏幕。但是当我换成 800x480、mdpi 和 5.1 英寸的屏幕(多 1.1 英寸)时,它looks 比在 Nexus S 中要好得多,即使 dpi (mdpi) 较低。即使屏幕尺寸(5.1' x 5.5')和分辨率(800x480 vs 1280x720)更小,它看起来也比 Galaxy J7 真机更好。
那么,它怎么能很好地适应 800x480 5.1' mdpi 屏幕,但不能适应 1280x720 5.5' Galaxy J7 和 800x480 4.0' hdpi 屏幕 (Nexus S)?
另外,如果我创建一个与 Galaxy J7 真实设备(1280x720 和 5.5')具有相同屏幕规格的虚拟设备,它非常适合,不像真实手机。
【问题讨论】:
-
如果您不想自己制作多个
dimens.xml,则应使用github.com/intuit/ssp 和github.com/intuit/sdp。它不会使您的应用在所有设备上显示完全相同,但在您的情况下它看起来比使用纯 dp 更好。 -
@ThuanTang 我看过这些库,但我有点害怕使用它,因为它不是官方库。我使用
android:autoSizeTextType、layout_constraintWidth_percent和layout_constraintHeight_percent解决了我的问题。 -
那些库只包含很多
dimens.xml文件,你可以去查看它们的源代码。layout_constraintWidth_percent和layout_constraintHeight_percent在你的情况下肯定不错,但与dimens.xml相比,它会花费很多性能
标签: android android-layout android-constraintlayout android-screen-support