如何为纵向和横向方向指定不同的布局?

问题描述 投票:133回答:9

我已经看到了能够为一个活动指定两个单独的布局xml文件的引用,一个用于Portrait,一个用于Landscape。我没有找到任何有关如何做到这一点的信息。如何为每个活动指定哪个xml文件是纵向布局,哪个是横向布局?

是否也可以为不同的屏幕尺寸指定不同的布局?如果是这样,这是怎么做到的?

android orientation landscape portrait
9个回答
194
投票

创建一个layout-land目录,并将布局XML文件的横向版本放在该目录中。


0
投票

Android Studio 3.x.x的最快方式

1.转到活动布局的设计选项卡

2.在顶部你应该按下预览按钮的方向,有一个选项来创建一个横向布局(检查图像),一个新的文件夹将被创建为你的特定方向的xml布局文件

enter image description here


59
投票

您只需根据方向和分辨率将其放在具有不同名称的单独文件夹下,设备将自动为其屏幕设置选择正确的文件夹

更多信息:

http://developer.android.com/guide/practices/screens_support.html

在“屏幕大小和密度的资源目录限定符”下


23
投票

适合老鼠爱好者!我说右键单击resources文件夹和Add new resource file,然后从Available qualifiers中选择orientation

enter image description here


但是你仍然可以通过添加子文件夹“layout-land”来手动完成

“你的项目目录\程序\ SRC \主\ RES”

从那时起,此子文件夹下的任何layout.xml文件将仅自动用于横向模式。

使用“layout-port”作为纵向模式。


19
投票

只是提醒:

如果您定义了清单orientation文件中的活动,请从android:configChanges属性中删除xml

android:configChanges="orientation|screenLayout|screenSize"

3
投票

创建一个新目录layout-land,然后在xml中创建具有相同名称的layout-land文件,因为它是layout目录并将您的内容与Landscape模式对齐。

请注意,两个xml中的内容ID都相同。


2
投票

或者用这个:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
            android:scrollbars="vertical" 
            android:layout_height="wrap_content" 
            android:layout_width="fill_parent">

  <LinearLayout android:orientation="vertical"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent">

     <!-- Add your UI elements inside the inner most linear layout -->

  </LinearLayout>
</ScrollView>

1
投票

我认为最新Android版本中最简单的方法是转到XML的设计模式(而不是文本)。

然后从菜单中选择选项 - 创建横向变化。这将在几秒钟内创建一个风景xml,没有任何麻烦。最新的Android Studio版本允许您立即创建横向视图。

enter image description here

我希望这适合你。


1
投票

下面的最后一行是应用两个量词的示例:横向和最小宽度(600dp)屏幕。用你需要的东西更新600dp。

res/layout/main_activity.xml                # For handsets
res/layout-land/main_activity.xml           # For handsets in landscape
res/layout-sw600dp/main_activity.xml        # For 7” tablets
res/layout-sw600dp-land/main_activity.xml   # For 7” tablets in landscape

以上也适用于尺寸

res/values/dimens.xml                # For handsets
res/values-land/dimens.xml           # For handsets in landscape
res/values-sw600dp/dimens.xml        # For 7” tablets
res/values-sw600dp-land/dimens.xml   # For 7” tablets in landscape

一个有用的设备指标:https://material.io/tools/devices/


0
投票
  1. 右键单击res文件夹,
  2. 新 - > Android资源文件
  3. 在“可用限定符”中,选择“方向”,
  4. 添加到选择的限定符
  5. 在屏幕方向中,选择横向
  6. 按确定

使用Android Studio 3.4.1,它不再创建layout-land文件夹。它将创建一个文件夹并将两个布局文件放在一起。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.