Android: 横向模式的替代布局 xml

我怎样才能有一个布局的风景和一个肖像?我想假设额外的宽度和节省垂直空间时,用户转动手机横向。

185354 次浏览

除非您另外指定,否则/res/layout 中的布局同时应用于纵向和横向。让我们假设我们的主页有/res/outs/home.xml,并且我们希望它在两种布局类型中看起来不同。

  1. 创建文件夹/res/布局-土地(在这里您将保持您的横向调整布局)
  2. 拷贝 home.xml
  3. 对它进行必要的修改

来源

默认情况下,/res/layout中的布局应用于纵向和横向。

举个例子

/res/layout/main.xml

您可以添加一个新的文件夹 /res/layout-land,复制到它的 main.xml,并作出必要的调整。

orientation

另请参阅 http://www.androidpeople.com/android-portrait-amp-landscape-differeent-layoutshttp://www.devx.com/wireless/Article/40792/1954了解更多选项。

在当前版本的 Android Studio (v1.0.2)中,您可以通过点击下面截图中显示的可视化编辑器中的按钮来简单地添加横向布局。选择「创造景观变化」

Android Studio add landscape layout

您可以按照以下方式将特定布局分组到正确的文件夹结构下。

布局-土地-目标 _ 版本

也就是说

目标奇巧

同样你也可以创建你的布局。

Android Studio 3.x.x 和 Android Studio 4.x. x 的最快方法

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

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

enter image description here

我会尽快解释的。

首先,您可能会注意到,现在您应该按照 google 的要求使用 约束布局(参见 androix 库)。

在你的 android 工作室项目中,你可以通过创建额外的分辨率/布局/目录来提供特定于屏幕的布局。每个屏幕配置都需要一个不同的布局。

这意味着在两种情况下都必须使用 目录限定符:

  • Android 设备支持
  • Android 横向或纵向模式

因此,这里有一个例子:

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

您还可以使用 vicents.xml 对 res 资源文件使用限定符。

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/ xml

<resources>
<dimen name="grid_view_item_height">70dp</dimen>
</resources>

Res/value-land/ xml

<resources>
<dimen name="grid_view_item_height">150dp</dimen>
</resources>

Your _ item _ grid _ or _ list _ lay.xml

<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/constraintlayout"
android:layout_width="match_parent"
android:layout_height="wrap_content


<ImageView
android:id="@+id/image"
android:layout_width="0dp"
android:layout_height="@dimen/grid_view_item_height"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:background="@drawable/border"
android:src="@drawable/ic_menu_slideshow">


</androidx.constraintlayout.widget.ConstraintLayout>

资料来源: https://developer.android.com/training/multiscreen/screensizes