多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# Android 相对布局示例 > 原文: [https://javatutorial.net/android-relative-layout-example](https://javatutorial.net/android-relative-layout-example) 本教程通过示例说明了 Android 中的相对布局。 Android 中的布局对于基于 GUI 的应用程序非常重要。 在上一教程中,我们学习了[线性布局](https://javatutorial.net/android-linear-layout-example),本教程介绍了 Android 中的相对布局。 ## 相对布局 顾名思义,相对布局显示组件之间的相对位置。 可以相对于连续元素或父组件来指定位置。 相对布局是 Android 提供的最灵活的布局。 它使您可以在屏幕上放置元素。 默认情况下,它将所有组件设置在布局的左上方。 下图显示了相对布局的外观, ![relative layout](https://img.kancloud.cn/be/1d/be1d1853b5cc6dd4a22c735b585e35e2_258x380.jpg) 相对布局 ## 相对布局属性 以下是相对布局的属性。 * `Id`:定义布局 ID * `Gravity`*它指定对象在 x-y 平面中的位置。 * `IgnoreGravity`:被添加以忽略特定组件上的重力。 ## 相对布局构造函数 相对布局具有四个不同的构造函数 * `RelativeLayout(Contetxt context)` * `RelativeLayout(Contetxt context, AttributeSet attribute)` * `RelativeLayout(Contetxt context, AttributeSet attribute, int defStyleAttribute)` * `RelativeLayout(Contetxt context, AttributeSet attribute, int defStyleAttribute, in defStyleRes)` ## 相对布局的方法 以下是相对布局的几种重要方法 * `setGravity()`:它将子视图的重力设置为居中,向左或向右。 * `setHorizo​​ntalGravity()`:用于水平定位元素。 * `setVerticalGravity()`:用于垂直放置元素。 * `requestLayout()`:用于请求布局。 * `setIgnoreGravity()`:用于忽略任何特定元素的重力。 * `getGravity()`:用于获取元素的位置。 * `getAccessibilityClassName()`:返回对象的类名称。 ## 相对布局的 XML 属性 相对布局具有以下 XML 属性。 `android:layout_above`,它将给定组件的底部边缘定位在给定组件 ID 上方。 `android:layout_alignBaseline`,它将给定组件的基线置于给定组件 ID 的基线之上。 `android:layout_alignBottom`,它在给定组件 ID 的底部对齐。 `android:layout_alignEnd`,它在给定组件 ID 的末尾对齐。 `android:layout_alignLeft`,它将组件定位在给定组件 ID 的左侧。 `android:layout_alignRight`,将该组件定位在给定组件 ID 的右侧。 ## 相对布局示例 以下示例显示了 Android 中的相对布局。 创建一个空的活动并将相对布局从调色板拖到屏幕上。 然后拖动所需的 GUI 组件。 这是 xml 文件。 ```java <?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:layout_width="368dp" android:layout_height="495dp" xmlns:tools="http://schemas.android.com/tools" tools:layout_editor_absoluteX="8dp" tools:layout_editor_absoluteY="8dp" xmlns:android="http://schemas.android.com/apk/res/android"> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_alignParentTop="true" android:layout_marginLeft="141dp" android:layout_marginStart="141dp" android:layout_marginTop="89dp" android:text="Sign In" android:textColor="@android:color/black" android:textColorLink="@android:color/black" android:textSize="28sp" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="43dp" android:text="ID" android:textColor="@android:color/black" android:textSize="18sp" android:typeface="normal" android:layout_below="@+id/textView" android:layout_alignLeft="@+id/textView5" android:layout_alignStart="@+id/textView5" android:layout_marginLeft="10dp" android:layout_marginStart="10dp" /> <EditText android:id="@+id/editText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="10" android:inputType="textPersonName" android:text="Enter ID" android:layout_alignBaseline="@+id/textView2" android:layout_alignBottom="@+id/textView2" android:layout_alignLeft="@+id/editText2" android:layout_alignStart="@+id/editText2" /> <TextView android:id="@+id/textView5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="18sp" android:textColor="@android:color/black" android:text="Password" android:layout_alignBottom="@+id/editText2" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_marginLeft="32dp" android:layout_marginStart="32dp" /> <EditText android:id="@+id/editText2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_below="@+id/editText" android:ems="10" android:text="Password" android:inputType="textPassword" /> <Button android:id="@+id/S" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_below="@+id/editText2" android:layout_marginTop="32dp" android:text="SignIn" /> </RelativeLayout> ``` 这是输出的样子 ![relative layout example](https://img.kancloud.cn/33/6f/336f3ce45eb30f11dd4e97c86c116d04_180x300.jpg) 相对布局示例 您可以从[链接](https://github.com/JavaTutorialNetwork/Tutorials/blob/master/RelativeLayout.rar)下载源代码。