为什么应用程序使用"/ layout-mdpi"尽管手机显示为"Normal-XHDPI"

Som*_*ere 1 android android-layout

当我修复一个bug时,我偶然发现了这种奇怪的布局行为......

我有四种布局:

  • /res/layout/my.xml
  • /res/layout-large-hdpi/my.xml
  • /res/layout-mdpi/my.xml
  • /res/layout-sw600dp-mdpi/my.xml

我正在使用的手机是三星Note 2(我最喜欢的测试设备)并获取屏幕信息我使用的应用程序" ScreenInfo "

问题:我完全期望使用/ res/layout中的布局,因为我没有定义符合XHDPI标准的布局,而是使用了来自/ res/layout-mdpi的布局!为什么?对我来说完全是无稽之谈.

请参阅下面的应用程序附件:

注2中的ScreenInfo

Dee*_*eeV 5

布局是在/res/layout/当是绝对没有的布局符合有关标准才能使用.系统将根据提供的限定符查找可以从中提取资源的最详细的文件夹.所以,如果你有一个/res/layout-sw600dp-xhdpi/文件夹,它将首先检查那里的资源.然后它将转到/res/layout-xhdpi/文件夹.如果它在那里找不到它,它将向下移动dpi文件夹,直到最后一个是最常规的/res/layout/文件夹.

在这种情况下,没有-xhdpi文件夹.有一个-large-hdpi文件夹,但手机与-large限定符不匹配,因此它会跳过它.没有-hdpi文件夹.有一个-mdpi文件夹,所以它检查那里的资源.它找到它,所以它使用它.

  • 对我来说这是非常不直观的,我有一个特定的布局需要mdpi设备不同,这意味着我需要一个带有1个文件的'layout-mdpi'文件夹,以及一个'layout-hpdi'和其他所有文件,而不仅仅是能够将这些文件保留在常规布局文件夹中! (2认同)