Android Studio新手开发又又又双一天
本文介绍了Android中的相对布局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>
下面是代码效果图。

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