过去我在为不同的布局优化我的应用时遇到了麻烦。有人告诉我,normal
目录会覆盖large-land
目录,奇怪的是它是真的,所以我删除了normal
目录。
其他任何布局都会互相覆盖吗?我已将每个布局都放到这些文件夹中,并进行了适当的编辑(花了我一个星期的时间!),所以你看到的每个目录都在图片,里面有多个XML资源文件夹。我是否还需要做其他任何事情来优化我的应用程序以适应所有布局?我在清单中添加了以下内容:
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:xlargeScreens="true" />
答案 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;部分: