Android布局文件夹:布局,布局端口,布局土地


76

我不确定是否很好地理解了几个Android/res/layout文件夹的作用。

layout:总体布局

layout-port:必须针对纵向更改的窗口小部件的布局

layout-land:必须根据横向更改的窗口小部件的布局

例如,在Home示例应用程序中,layout-portlayout-land文件夹下只有一个home.xml文件。

我明白吗?


7
一些开发人员可能没有意识到掌握这一概念有多么重要,因此感谢您将其放在SO上。
whyoz 2013年

我的理论HTML5将在将来取代这些东西。
neferpitou

更新:Home示例应用程序不再存在。我不知道是什么取代了它。
Giorgio Vespucci19年

Answers:


115

如果您使用横向或纵向模式,Android会首先在-port或-land目录中查找布局文件,如果找不到,则会退回到默认布局目录。

您可以在此处阅读有关提供替代资源的信息。除了陆路和港口外,还有更多选择。


1
在这种情况下,其他布局不会根据方向发生变化,因此它们仅位于布局文件夹中,而房屋特定于肖像或风景
Cameron

我很惊讶每个属性都没有某种方向说明符,以指示每个属性的不同值。我知道,在分辨率可能会变得凌乱的情况下,但是由于只有两种可能的方向(并且永远都是这样),因此,例如,如果只有一个属性,不必为布局维护两个单独的文件可能会很好。需要在方向之间有所不同。
RTF 2014年

14

如果放置home.xmllayout-port文件夹中,则当设备以纵向放置时,它将使用文件:layout-port/home.xml

如果放置home.xmllayout-land文件夹中,则当设备以横向放置时,它将使用文件:layout-land/home.xml

对于不同的定向模式(例如纵向和横向)的含义...我们使用两个home.xml文件;一个在layout-port另一个在layout-land。另一方面,如果您希望两者都使用相同的布局文件,则只需将其放在文件夹中,然后从和home.xml中将其layout删除。layout-landlayout-port


1
我已经为layout和layout-land制作了单独的layout xml文件。但是,当我将方向更改为横向时,android不会显示其布局-土地文件。问题是什么?
YuDroid

10
如果您在-port和-land中有两个布局文件,并且在更改设备方向时它们不会切换,则可能在AndroidManifest.xml中指定了android:configChanges =“ orientation”。在这种情况下,请在onConfigurationChanged()中再次指定setContentView()或删除该AndroidManifest.xml指令。
伊曼纽尔·图泽里

3

res layout-land或中创建文件夹layout-port

layout-port: 必须更改为纵向方向的小部件的布局

layout-land: 必须根据横向更改的窗口小部件的布局

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.