目录

1.相对布局RelativeLayout

RelativeLayout的核心属性表


1.相对布局RelativeLayout

        与线性布局相比,相对布局通过相对定位,子控件位置更灵活,能实现更复杂的布局,有助于减少布局嵌套。相对布局的下级视图位置是由其他视图决定的,需要有具体的参照物才可以确定位置。如果没有设置参照物则下级视图默认显示在相对布局RelativeLayout内部的左上角。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity2">
    <TextView
        android:id="@+id/textView_1"
        android:layout_width="150dp"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="你好,世界!"
        android:textSize="20sp"
        android:background="@color/teal_200"/>


</RelativeLayout>

依据上面的代码,下面是效果图,可以看出在没有设置参照物时视图排列在左上角。

RelativeLayout的核心属性表

属性类别 属性名称 作用与说明
相对于父容器定位 android:layout_alignParentTop 控件顶部与父容器顶部对齐
android:layout_alignParentBottom 控件底部与父容器底部对齐
android:layout_alignParentLeft 控件左侧与父容器左侧对齐
android:layout_alignParentRight 控件右侧与父容器右侧对齐
android:layout_alignParentStart 控件起始边与父容器起始边对齐
android:layout_alignParentEnd 控件结束边与父容器结束边对齐
居中于父容器 android:layout_centerInParent 控件在父容器中完全居中
android:layout_centerHorizontal 控件在父容器中水平居中
android:layout_centerVertical 控件在父容器中垂直居中
相对于兄弟控件定位 android:layout_above 控件位于指定兄弟控件的上方
android:layout_below 控件位于指定兄弟控件的下方
android:layout_toLeftOf 控件位于指定兄弟控件的左侧
android:layout_toRightOf 控件位于指定兄弟控件的右侧
android:layout_toStartOf 控件位于指定兄弟控件的起始方向
android:layout_toEndOf 控件位于指定兄弟控件的结束方向
与兄弟控件对齐 android:layout_alignTop 控件顶部与指定兄弟控件顶部对齐
android:layout_alignBottom 控件底部与指定兄弟控件底部对齐
android:layout_alignLeft 控件左侧与指定兄弟控件左侧对齐
android:layout_alignRight 控件右侧与指定兄弟控件右侧对齐
android:layout_alignStart 控件起始边与指定兄弟控件起始边对齐
android:layout_alignEnd 控件结束边与指定兄弟控件结束边对齐
android:layout_alignBaseline 控件文本基线与指定兄弟控件文本基线对齐

下面是代码示例。

代码解释:

        1.视图textView_center的属性layout_centerInParent="true"表示该视图位于父视图即RelativeLayout的中间位置;

        2.视图textView_center_horizontal的属性layout_centerhorizontal="true"表示该视图位于父视图的水平方向中间位置;

        3.视图textView_center_vertical的属性layout_centervertical="true"表示该视图位于父视图的垂直方向中间位置;

        4.视图textView_parent_left的属性android:layout_alignParentLeft="true"表示该视图位于父视图的左边对齐,在效果图中并没有显示是因为被视图textView_parent_top覆盖了;

        5.视图textView_parent_right的属性android:layout_alignParentRight="true"表示该视图位于父视图的右边对齐;

        6.视图textView_parent_top的属性android:layout_alignParentTop="true"表示该视图位于父视图的底部对齐;

        7.视图textView_parent_bottom的属性android:layout_alignParentBottom="true"表示该视图位于父视图的底部对齐;

        8.视图textView_left_center的属性android:layout_alignTop="@+id/textView_center"与android:layout_toLeftOf="@+id/textView_center"表示该视图位于视图textView_center的左边并且底部对齐;

        9.视图textView_right_center的属性android:layout_alignBottom="@+id/textView_center"与 android:layout_toRightOf="@+id/textView_center"表示该视图位于视图textView_center的右边并且底部对齐;

        10.视图textView_above_center的属性android:layout_above="@+id/textView_center"与 android:layout_alignLeft="@+id/textView_center"表示该视图位于视图textView_center的上面并且左对齐;

        11.视图textView_below_center的属性android:layout_below="@+id/textView_center"与 android:layout_alignRight="@+id/textView_center"表示该视图位于视图textView_center的下面并且右对齐。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity2">

    <TextView
        android:id="@+id/textView_center"
        android:layout_width="wrap_content"
        android:layout_height="80dp"
        android:layout_centerInParent="true"
        android:background="@color/red"
        android:gravity="center"
        android:text="我在中间"
        android:textColor="#000000"
        android:textSize="20sp" />

    <TextView
        android:id="@+id/textView_center_horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:background="@color/teal_200"
        android:text="我在水平中间"
        android:textColor="#000000"
        android:textSize="15sp" />

    <TextView
        android:id="@+id/textView_center_vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:background="@color/teal_200"
        android:text="我在垂直中间"
        android:textColor="#000000"
        android:textSize="15sp" />

    <TextView
        android:id="@+id/textView_parent_left"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:background="@color/teal_200"
        android:text="我跟上级左边对齐"
        android:textSize="15sp"
        android:textColor="#000000" />

    <TextView
        android:id="@+id/textView_parent_right"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:background="@color/teal_200"
        android:text="我跟上级右边对齐"
        android:textColor="#000000"
        android:textSize="15sp" />

    <TextView
        android:id="@+id/textView_parent_top"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:background="@color/teal_200"
        android:text="我跟上级顶部对齐"
        android:textColor="#000000"
        android:textSize="15sp" />

    <TextView
        android:id="@+id/textView_parent_bottom"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="@color/teal_200"
        android:text="我跟上级底部对齐"
        android:textColor="#000000"
        android:textSize="15sp" />

    <TextView
        android:id="@+id/textView_left_center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/textView_center"
        android:layout_toLeftOf="@+id/textView_center"
        android:background="@color/teal_200"
        android:text="我在中间左边顶部对齐"
        android:textColor="#000000"
        android:textSize="15sp" />

    <TextView
        android:id="@+id/textView_right_center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/textView_center"
        android:layout_toRightOf="@+id/textView_center"
        android:background="@color/teal_200"
        android:text="我在中间右边底部对齐"
        android:textColor="#000000"
        android:textSize="15sp" />

    <TextView
        android:id="@+id/textView_above_center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/textView_center"
        android:layout_alignLeft="@+id/textView_center"
        android:background="@color/teal_200"
        android:text="我在中间上面左对齐"
        android:textColor="#000000"
        android:textSize="15sp" />

    <TextView
        android:id="@+id/textView_below_center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView_center"
        android:layout_alignRight="@+id/textView_center"
        android:background="@color/teal_200"
        android:text="我在中间下面右对齐"
        android:textColor="#000000"
        android:textSize="15sp" />


</RelativeLayout>

下面是代码效果图。

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐