【问题标题】:Android landscape layoutAndroid横向布局
【发布时间】:2012-05-11 13:39:18
【问题描述】:

我正在设计一个应用程序,我只是想知道如何在横向模式下制作不同的布局。我在 res 中创建了一个名为“layout-land”的文件夹并创建了一个 xml 文件,但是当我运行模拟器时它不起作用。我试着称它为“main”,但它说它已经存在,但它确实存在于“layout”文件夹中。如果我称它为不同的东西,我是否需要更改清单中的某些内容?谢谢您的帮助!

【问题讨论】:

  • 不,你正在做的只是再次检查文件夹和xml文件的拼写。developer.android.com/guide/topics/resources/…
  • 不完全明白你的问题。但是 android 会在方向更改时自动更改布局,直到您没有在活动中覆盖 onConfigurationChage。

标签: java android android-layout


【解决方案1】:

澄清一下,如果您处于横向或纵向,Android 首先会在 -land 目录中查找布局文件,如果未找到,则会检查默认的 layout 目录。您的文件应命名如下,系统将根据设备的当前配置在运行时加载:

res/layout/main.xml
res/layout-land/main.xml

查看providing resources 上的文档了解更多信息。

【讨论】:

  • 谢谢,正如我所说,虽然当我右键单击 layout-land 文件夹并单击新的 android xml 文件时,我无法将其命名为“main”,它说已经存在但它不存在在那个文件夹中
  • 嗨 rsay3,Alex 真的解决了你的问题吗?我正在做 TheNewBoston 教程并遇到同样的问题。我有 layout 和 layout-land 目录。 layout-land 是空的,如果我查看 eclipse 中的文件夹,它会正确映射到 layout-land 目录。我仍然有问题。可能是日食错误。我不得不通过将文件从布局复制到布局域并刷新 Eclipse 来解决它。
  • 啊,chrisrisner.com/… 解释了它。 Eclipse 会忽略您右键单击的目录,并假定您要在陆地上创建一个文件。您可以忽略该错误,然后选择横向,它会更新它认为应该保存文件的目录。
  • 哦,好的。有时我觉得我什至不知道 eclipse 有一半的时间是如何工作的:P。对不起,如果我的回答不是很有帮助...它解释了动态布局加载如何工作背后的理论,而不是查明特定问题。
【解决方案2】:

你想要这样的文件夹结构:

res\layout\main.xml
res\layout-land\main.xml

这些布局中的每一个都应包含相同的元素,但要重新排列,例如如果您在纵向横向中有一个带有android:id="@+id/button1" 的按钮,则需要在横向模式下为等效按钮提供相同的名称。

【讨论】:

    【解决方案3】:

    首先,您必须通过添加到清单中来监听配置更改

    android:configChanges="orientation"
    

    然后你可以重写这个函数并使用 setContentView

    public void onConfigurationChanged(Configuration newConfig)
    

    【讨论】:

    • 这个函数要检查什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多