【问题标题】:Android layout folders: layout, layout-port, layout-landAndroid 布局文件夹:layout、layout-port、layout-land
【发布时间】:2011-07-21 10:25:43
【问题描述】:

我不确定是否很好地理解了几个 Android /res/layout 文件夹所扮演的角色。

layout: 总体布局

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

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

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

我理解对了吗?

【问题讨论】:

  • 有些开发者可能没有意识到掌握这个概念有多么重要,所以谢谢你把这个放在 SO 上。
  • 我的理论HTML5将来会取代这些东西。
  • 更新:Home 示例应用程序不再存在。我不知道是什么取代了它。

标签: android layout android-layout


【解决方案1】:

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

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

【讨论】:

  • 在这种情况下,其他布局不会根据方向而改变,因此它们只是在布局文件夹中,而 home 特定于纵向或横向
  • 我很惊讶每个属性都没有某种方向说明符来指示每个属性的不同值。我知道在分辨率可能会变得混乱的情况下,但是由于只有两个可能的方向(并且总是如此),如果例如只有一个属性,则不必为布局维护两个单独的文件可能会很好需要在不同的方向上有所不同。
【解决方案2】:

如果您将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 中删除。

【讨论】:

  • 我已经为布局和布局地制作了单独的布局 xml 文件。但是当我将方向更改为横向时,它的 layout-land 文件没有被 android 显示。有什么问题?
  • 如果您在 -port 和 -land 中有两个布局文件,并且当您更改设备方向时它们没有切换,您可能在 AndroidManifest.xml 中指定了 android:configChanges="orientation"。在这种情况下,在 onConfigurationChanged() 中再次指定 setContentView() 或删除该 AndroidManifest.xml 指令。
【解决方案3】:

res layout-landlayout-port 中创建文件夹

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    相关资源
    最近更新 更多