常见界面布局之RelatitveLayout(相对布局)

    技术2022-07-17  89

    为了适应不同的界面风格,Android系统提供了五种常用布局,分别未RelativeLayout(相对布局)、FrameLayout(帧布局布局)、TableLayout(表格布局)、ConstraintLayout(约束布局)。

    1、布局的通用属性

    Android系统的五种常用布局直接或者间接继承自ViewGroup,因此五种常用的布局也支持再ViewGroup中定义的属性,这些属性可以看作布局的通用属性。

    属性名称功能描述android:id设置布局的标识android:layout_width设置布局的宽度android:layout_height设置布局的高度android:layout_background设置布局的背景android:margin设置当前布局与屏幕边界或与周围控件的距离android:padding设置当前布局与该布局中的控件的距离

    1.1接下来,针对表2-1中的属性进行详细讲解,具体如下:

    android:id

    用于设置当前布局的唯一标识。在XML文件中它的属性值是通过“@+id/属性名称”定义的。为布局指定android:id属性后,在R.java文件中,会自动生成对应的int值。在Java代码中通过未findViewById()方法传入该int值来获取该布局对象。

    android:layout_width

    用于设置布局的宽度,其值可以是具体的尺寸,如30dp,也可以是系统定义的值,具体如下: (1)fill_parent:表示该布局的宽度与父容器(从根元素讲是屏幕)的宽度相同。 (2)match_parent:与fill_parent的作用相同,从Android2.2开始推荐使用match_parent。 (3)wrap_content:表示该布局的宽度恰好能包裹它的内容。

    android:layout_height

    用于设置布局的高度,其值可以是具体的尺寸,如50dp, 也可以是系统定义的值,具体如下: (1) fill_parent: 表示该布局的高度与父容器的高度相同。 (2) match_parent: 与fill_parent的作用相同,从Android 2. 2开始推荐使用match_parent. (3) wrap_content: 表示该布局的高度恰好能包裹它的内容。

    android:background

    用于设置布局背景,其值可以引用图片资源,也可以是颜色资源。

    android:layout_margin

    用于设置当前布局与屏幕边界、周围布局或控件的距离。属性值为具体的尺寸,如45dp. 与之相似的还有android:layout_margin Top、android:layout_marginBottom、android:layout_marginLeft. android:layout_marginRight属性,分别用于设置当前布局与屏幕、周围布局或者控件的上、下、左、右边界的距离。

    android:padding

    用于设置当前布局内控件与该布局的距离,其值可以是具体的尺寸,如45dp. 与之相似的还有android:paddingTop,android:paddingBottom、android:paddingLeft,android:paddingRight相关属性,分别用于设置当前布局中控件与该布局上、下、左、右的距离。 需要注意的是。Android系统提供的五种常用布局必须设置android:layout_width 和android: layout_height属性指定其宽高,其他的属性可以根据需求进行设置。

    2.RelatitveLayout(相对布局)

    RelatitveLayout(相对布局)通过相对定位的方式指定子控件的位置。在XML布局文件中定义相对布局时使用标签,定义个数如下所示: RelatitveLayout子控件中的属性如下表所示

    属性名称功能描述android:layout_centerlnParent设置当前控件位于父布局的中央位置android:layout _centerVertical设置当前控件位于父布局的垂直居中位置android:layout_centerHorizontal设置当前控件位于父控件的水平居中位置android:layout_above设置当前控件位于某控件上方android:layout_below设置当前控件位于某控件下方android:layout_toLeftof设置当前控件位于某控件右侧android:layout_toRightof设置当前控件是否与父控件顶端对齐android:layout_alignParent Top设置当前控件是否与父控件左对齐android:layout_alignParentLeft设置当前控件是否与父控件右对齐android:layout_alignParentBottom设罚前控件是否与父控件底端对齐android:layout_alignTop设置当前控件的上边界与某控件的上边界对齐android:layout_alignBottom设置当前控件的下边界与某控件的下边界对齐android:layout_alignLeft设置当前控件的左边界与某控件的左边界对齐android:layout_alignRight设置当前控件的右边界与某控件的右边界对齐 <RelatitveLayout xmlns:android="http://schemas.android.com/apk/res/android" 属性 = "属性值" ......> </RelatitveLayout>

    RelatitveLayout通过以父容器或其他子控件未参照物,指定布局中子控件的位置。在RelatitveLayout中的子控件具备一些属性。 1.创建程序

    创建一个名为RelativeLayout(相对布局)的应用程序,指定包名为cn.itcast.relativelayout。

    2.放置界面控件

    在activity_main.xml文件的RelativeLayout布局中放置3个Button控件分别表示“按钮1”、"按钮2”和"按钮3”。activity_main.xml文件的具体代码如图所示。

    <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" //按钮,id的属性值是是通过“@+id/属性名称”定义的 android:id="@+id/btn_one" android:text="按钮1" android:layout_alignParentBottom="true" android:layout_marginBottom="20dp"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/btn_two" android:text="按钮2" android:layout_centerHorizontal="true" android:layout_marginTop="260dp"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/btn_three" android:text="按钮3" android:layout_alignBottom="@id/btn_two" android:layout_marginBottom="100dp" android:layout_toRightOf="@id/btn_two"/> </RelativeLayout> package com.example.myapplication; import androidx.appcompat.app.AppCompatActivity; import android.graphics.Color; import android.os.Bundle; import android.widget.RelativeLayout; import android.widget.TextView; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //调用linearlayout_main } }

    Processed: 0.008, SQL: 9