原文: https://javatutorial.net/android-relative-layout-example

本教程通过示例说明了 Android 中的相对布局。

Android 中的布局对于基于 GUI 的应用程序非常重要。 在上一教程中,我们学习了线性布局,本教程介绍了 Android 中的相对布局。

相对布局

顾名思义,相对布局显示组件之间的相对位置。 可以相对于连续元素或父组件来指定位置。 相对布局是 Android 提供的最灵活的布局。 它使您可以在屏幕上放置元素。 默认情况下,它将所有组件设置在布局的左上方。 下图显示了相对布局的外观,

Android 相对布局示例 - 图1

相对布局

相对布局属性

以下是相对布局的属性。

  • 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():它将子视图的重力设置为居中,向左或向右。
  • setHorizontalGravity():用于水平定位元素。
  • 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 文件。

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout android:layout_width="368dp"
  3. android:layout_height="495dp"
  4. xmlns:tools="http://schemas.android.com/tools"
  5. tools:layout_editor_absoluteX="8dp"
  6. tools:layout_editor_absoluteY="8dp"
  7. xmlns:android="http://schemas.android.com/apk/res/android">
  8. <TextView
  9. android:id="@+id/textView"
  10. android:layout_width="wrap_content"
  11. android:layout_height="wrap_content"
  12. android:layout_alignParentLeft="true"
  13. android:layout_alignParentStart="true"
  14. android:layout_alignParentTop="true"
  15. android:layout_marginLeft="141dp"
  16. android:layout_marginStart="141dp"
  17. android:layout_marginTop="89dp"
  18. android:text="Sign In"
  19. android:textColor="@android:color/black"
  20. android:textColorLink="@android:color/black"
  21. android:textSize="28sp" />
  22. <TextView
  23. android:id="@+id/textView2"
  24. android:layout_width="wrap_content"
  25. android:layout_height="wrap_content"
  26. android:layout_marginTop="43dp"
  27. android:text="ID"
  28. android:textColor="@android:color/black"
  29. android:textSize="18sp"
  30. android:typeface="normal"
  31. android:layout_below="@+id/textView"
  32. android:layout_alignLeft="@+id/textView5"
  33. android:layout_alignStart="@+id/textView5"
  34. android:layout_marginLeft="10dp"
  35. android:layout_marginStart="10dp" />
  36. <EditText
  37. android:id="@+id/editText"
  38. android:layout_width="wrap_content"
  39. android:layout_height="wrap_content"
  40. android:ems="10"
  41. android:inputType="textPersonName"
  42. android:text="Enter ID"
  43. android:layout_alignBaseline="@+id/textView2"
  44. android:layout_alignBottom="@+id/textView2"
  45. android:layout_alignLeft="@+id/editText2"
  46. android:layout_alignStart="@+id/editText2" />
  47. <TextView
  48. android:id="@+id/textView5"
  49. android:layout_width="wrap_content"
  50. android:layout_height="wrap_content"
  51. android:textSize="18sp"
  52. android:textColor="@android:color/black"
  53. android:text="Password"
  54. android:layout_alignBottom="@+id/editText2"
  55. android:layout_alignParentLeft="true"
  56. android:layout_alignParentStart="true"
  57. android:layout_marginLeft="32dp"
  58. android:layout_marginStart="32dp" />
  59. <EditText
  60. android:id="@+id/editText2"
  61. android:layout_width="wrap_content"
  62. android:layout_height="wrap_content"
  63. android:layout_alignParentEnd="true"
  64. android:layout_alignParentRight="true"
  65. android:layout_below="@+id/editText"
  66. android:ems="10"
  67. android:text="Password"
  68. android:inputType="textPassword" />
  69. <Button
  70. android:id="@+id/S"
  71. android:layout_width="wrap_content"
  72. android:layout_height="wrap_content"
  73. android:layout_alignParentEnd="true"
  74. android:layout_alignParentRight="true"
  75. android:layout_below="@+id/editText2"
  76. android:layout_marginTop="32dp"
  77. android:text="SignIn" />
  78. </RelativeLayout>

这是输出的样子

Android 相对布局示例 - 图2

相对布局示例

您可以从链接下载源代码。