【问题标题】:How to force android choose the right layout for the screen sizes supported?如何强制 android 为支持的屏幕尺寸选择正确的布局?
【发布时间】:2014-02-01 22:12:16
【问题描述】:

我正在尝试支持我的项目中的所有类型的屏幕。 我在文件夹drawables(ldpi,mdpi,Hdpi,xhdpi,xxhdpi)中添加了相应的图形,, 还有布局文件夹(layout-small、layout、layout-large、layout-xlarge、layout-xxlarge)。 事情是这样的: 当我在模拟器上打开应用程序时,在普通屏幕(mdpi)上,一切都是正确的, 但是当我选择其他模拟器,比如一个 Hdpi/large 时,android 系统没有选择正确的图形。(例如我打开一个 Hdpi 模拟器,系统正在选择普通图形(mdpi)。

我需要做什么?,我需要写一些代码来强制系统选择正确的图形吗?,真的需要帮助!

【问题讨论】:

  • Android 选择了正确的布局和 DPI 可绘制对象,这是您的图形错误 :) 相信我。
  • @MartínMarconcini 我的图形怎么会出错?
  • 他们怎么可能是错的,例如,如果我瞄准一个 hdpi 屏幕(400px x 854px - 至少)我使背景尺寸相同(400px x 854px)并且我把背景放在 hdpi文件夹,然后设计Layout-large/main.xml
  • 我已经阅读了这两个链接,.. developer.android.com/guide/topics/resources/… developer.android.com/guide/topics/resources/… 它应该选择正确的图形/布局

标签: java android android-layout hdpi mdpi


【解决方案1】:

您应该更改每种视图类型之间的 dpi 值,以便它们在每个视图中看起来都合适。在网页Supporting Multiple Screens 上,有一个图表显示了不同屏幕的最小屏幕尺寸。您将不得不做一些代数来比较每个值,以便您可以将图像的 dpi 从一种尺寸转换为另一种尺寸。但是,另一种解决方案是使用“match_parent”和“wrap_content”而不是使用定义的大小,因为它简化了过程。相同的过程适用于视图中文本的 sp。

我所指的图表是这样的:

  • xlarge 屏幕至少为 960dp x 720dp

  • 大屏幕至少为 640dp x 480dp

  • 正常屏幕至少为 470dp x 320dp

  • 小屏幕至少为 426dp x 320dp

编辑:我还忘了提到,如果您在 LinearLayout 中使用多个视图,您可以使用名为 android:layout_weight 的 android 属性来使用比率来划分屏幕。


编辑:那么问题可能是您没有正确缩放图像。也许您应该尝试将这些添加到您的 ImageViews:

android:adjustViewBounds="true"
android:scaleType="fitXY"

【讨论】:

  • 我的布局图形(背景)是这样的:*ldpi 240 x 320 *mdpi 320 x 480 *hdpi 480 x 800 *xhdpi 720 x 1280 *xxhdpi 1080 x 1920
  • 也许您应该尝试将 ImageViews 的 scaleType 设置为 fitXY 并将 adjustViewBounds 设置为 true。
  • 那是什么?,我该如何尝试?
  • 它将在您正在修改的 .xml 文件中。具体来说,它是一个从 ImageView 继承的选项。在 xml 中,您必须添加: android:adjustViewBounds="true" android:scaleType="fitXY" 到您的 ImageView。
  • 嗯,我不知道这是否可行,但是,android系统没有选择正确的图形是:
猜你喜欢
  • 2012-03-17
  • 1970-01-01
  • 2019-02-17
  • 1970-01-01
  • 1970-01-01
  • 2011-05-20
  • 2019-06-17
  • 1970-01-01
  • 2014-10-22
相关资源
最近更新 更多