屏幕尺寸不同?

时间:2016-01-06 04:00:32

标签: android

过去我在为不同的布局优化我的应用时遇到了麻烦。有人告诉我,normal目录会覆盖large-land目录,奇怪的是它是真的,所以我删除了normal目录。

enter image description here

其他任何布局都会互相覆盖吗?我已将每个布局都放到这些文件夹中,并进行了适当的编辑(花了我一个星期的时间!),所以你看到的每个目录都在图片,里面有多个XML资源文件夹。我是否还需要做其他任何事情来优化我的应用程序以适应所有布局?我在清单中添加了以下内容:

<supports-screens
        android:anyDensity="true"
        android:largeScreens="true"
        android:normalScreens="true"
        android:smallScreens="true"
        android:xlargeScreens="true" />

1 个答案:

答案 0 :(得分:1)

我建议您不要删除普通目录,因为它始终用作默认目录。

普通目录的实用程序是指系统无法在与您的设备匹配的目录中找到xml文件,因此它将采用默认的xml( 普通目录)。

如果您忘记添加一个(或多个)屏幕尺寸/方向目录,这将非常有用。

这是一个例子:

假设您的设备属于xlarge类别。

场景1:

你有这些xmls:

(1) res/layout/my_layout.xml              // layout for normal screen size ("default")
(2) res/layout-xlarge/my_layout.xml       // layout for extra-large screen size
(3) res/layout-xlarge-land/my_layout.xml  // layout for extra-large in landscape orientation
  • 在横向模式下,Android会在res/layout-xlarge-land目录=&gt;中查找xml目录存在,它包含my_layout.xml所以没关系,它将采用这个。

  • 在纵向模式下,Android会在res/layout-xlarge-port目录=&gt;中查找xml该目录丢失,因此它会在res/layout-xlarge =&gt;中查找xml目录存在,它包含my_layout.xml所以没关系,它将采用这个。

场景2:(没有layout-xlarge目录)

你有这些xmls:

(1) res/layout/my_layout.xml              // layout for normal screen size ("default")
(3) res/layout-xlarge-land/my_layout.xml  // layout for extra-large in landscape orientation
  • 在横向模式下,Android会在res/layout-xlarge-land目录=&gt;中查找xml目录存在,它包含my_layout.xml所以没关系,它将采用这个。

  • 在纵向模式下,Android会在res/layout-xlarge-port目录=&gt;中查找xml该目录丢失,因此它会在res/layout-xlarge =&gt;中查找xml它也缺失了,所以它会在res/layout =&gt;中寻找xml。目录存在,它包含my_layout.xml所以没关系,它将采用这个。

有关详细信息,请查看official documentation,&#34; 使用配置限定符&#34;部分: