2011-03-23 302 views
64

我不确定是否已经很好地理解了几个Android /res/layout文件夹所扮演的角色。Android布局文件夹:布局,布局端口,布局区域

layout:一般布局

layout-port:布局控件必须为纵向

layout-land改变:布局控件必须在Home示例应用程序的横向

改变。例如,在layout-portlayout-land文件夹下只有一个home.xml文件。

我理解对不对?

+6

一些开发商可能没有意识到创建文件夹掌握这个概念有多重要,所以谢谢把它放在SO上。 – whyoz 2013-04-08 19:08:25

+0

我的理论HTML5将在未来取代这个东西。 – neferpitou 2015-03-01 01:32:07

回答

106

如果您处于横向或纵向状态,则首先在-port或-land目录中查找布局文件,如果找不到则返回到默认布局目录。

你可以阅读关于提供替代资源here。除陆地和港口外,还有更多的选择。

+1

在这种情况下,其他布局不会根据方向发生变化,因此它们只是在布局文件夹中,而主页是针对纵向或横向的 – Cameron 2011-03-23 15:47:55

+0

我很惊讶没有某种方向说明符为每个属性,以为每个指示不同的值。我明白,在解决方案可能会变得混乱的情况下,但由于只有两种可能的方向(并且总是会),所以不必为布局维护两个单独的文件,例如,如果只有一个属性需要区分不同的方向。 – RTF 2014-01-05 02:31:35

10

如果您将home.xml放入layout-port文件夹中,当您的设备处于纵向时,它将使用文件:layout-port/home.xml

如果您将home.xml置于layout-land文件夹中,则当您的设备处于横向模式时,它将使用文件:layout-land/home.xml

对于不同的方向模式(如纵向和横向)的含义...我们使用两个home.xml文件;一个在layout-port,另一个在layout-land。另一方面,如果您想为两者使用相同的布局文件,则可以将home.xml放在layout文件夹中,并将其从layout-landlayout-port中删除。

+1

我已经为layout和layout-land制作了分开的布局xml文件。但是当我将方向更改为横向时,它的布局文件不会被android显示。问题是什么? – YuDroid 2012-07-09 05:58:37

+7

如果您在-port和-land中有两个布局文件,并且在更改设备方向时它们不会切换,那么您可能在AndroidManifest.xml中指定了android:configChanges =“orientation”。在这种情况下,再次指定onConfigurationChanged()中的setContentView()或删除该AndroidManifest.xml指令。 – 2012-07-17 08:37:07

3

res layout-landlayout-port

layout-port:布局小部件必须为纵向改变

layout-land:布局小部件必须为横向改变