Android相对布局示例

时间:2020-02-23 14:29:12  来源:igfitidea点击:

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

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

相对布局

顾名思义,相对布局显示组件之间的相对位置。可以根据连续元素或者父组件指定位置。相对布局是Android提供的最灵活的布局。它允许我们在屏幕上定位元素。默认情况下,它将所有组件设置在布局的左上角。如下图所示,

相对布局

相对布局属性

下面是相对布局的属性。

Id:定义布局的if

Gravity:指定物体在x-y平面上的位置。

IgnoreGravity:增加后忽略某个部件上的重力。

相关布置施工人员

相对布局有四个不同的构造函数

RelativeLayout(context上下文)

RelativeLayout(context上下文,AttributeSet attrs)

RelativeLayout(context上下文,AttributeSet attrs,int defStyleAttribute)

RelativeLayout(context上下文,AttributeSet attrs,int defStyleAttribute,int 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文件。

<?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>