2011-03-23 207 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:佈局小部件必須爲橫向改變