java - 如何强制android为支持的屏幕尺寸选择正确的布局?

标签 java android android-layout hdpi mdpi

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

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

最佳答案

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

我指的图表是这样的:

  • 超大屏幕至少为 960dp x 720dp

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

  • 普通屏幕至少为 470dp x 320dp

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

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


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

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

关于java - 如何强制android为支持的屏幕尺寸选择正确的布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21504331/

相关文章:

java - 来自不同文件的基本 JAVA 变量范围

java - 想要将 DataBufferUShort 转换为 DataBufferInt

Android Studio : Error inflating class android. support.design.widget.FloatingActionButton

android - 如何实现两级 DrawerLayout

java - 这在 Mockito : when(SomeClass. getIntance()).thenReturn(myMock) 中可能吗?

java - 如何设置网站上下文路径

android - 在 Chaquopy 上从 ExternalStorage 运行文件

Android AlertDialog按钮定位

android - 在 Android 上播放 AAC 缓冲区

android - 在 android GSON 中序列化 json 属性时初始化自定义属性?