RelativeLayout

本文深入解析了Android中的RelativeLayout布局,详细介绍了如何使用各种属性如alignParentTop、alignParentRight等来定位控件,以及如何通过layout_below、layout_toRightOf等属性实现控件间的相对位置布局。

RelativeLayout

相对布局,控件之间的位置是相对位置,可以相对父控件或者相对子控件之间进行布局

(1)属性值为true或者false

一般相对父布局

android :layout_centerHorizontal //相对父布局水平居中
android :layout_centerVertical   //相对父布局垂直居中
android :layout_centerInParent   //相对父布局居中
android:layout_alignParentRight  //父布局右边缘
android:layout_alignParentLeft  //父布局左边缘
android:layout_alignParentTop    //父布局上边缘
android:layout_alignParentBottom  //父布局下边缘

(2)引用为id的name “@+id/name”

相对同级元素

android:layout_below         //某元素下方
android:layout_above         //某元素上方
android:layout_toRightOf     //某元素右边
android:layout_toLeftOf      //某元素左边
android:layout_alignRight    //右边缘对齐
android:layout_alignLeft     //左边缘对齐
android:layout_alignTop      //上边缘对齐
android:layout_alignBottom    //下边缘对齐

align 使成一线,排列成一条线

(3)属性为具体的值 =“10dp”

 android:layout_marginTop      //离某元素上边缘距离
 android:layout_marginBottom   //离某元素下边缘距离
 android:layout_marginLeft     //离某元素左边缘距离
 android:layout_marginRight   //离某元素右边缘距离

margin n边缘,利润,盈亏 vt 留边,成为···的边

实现如下一个布局,可以用两种方式
在这里插入图片描述`<?xml version="1.0" encoding="utf-8"?>

<TextView
    android:id="@+id/text2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@id/text1"
    android:layout_alignLeft="@id/text1"
    android:layout_marginLeft="40dp"
    android:text="text2" />
<TextView
    android:id="@+id/text3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@id/text1"
    android:layout_alignRight="@id/text1"
    android:layout_marginRight="40dp"
    android:text="text3" />
<TextView
    android:id="@+id/text4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/text1"
    android:layout_alignLeft="@+id/text1"
    android:layout_marginLeft="40dp"
    android:text="text4" />
<TextView
    android:id="@+id/text5"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/text1"
    android:layout_alignRight="@+id/text1"
    android:layout_marginRight="40dp"
    android:text="text5" />

对于右上角的textView2,首先置于要参照控件顶部
android:layout_above="@id/text1"
接下来让左边缘与text1的左边缘对其
android:layout_alignLeft="@id/text1"
最后设置text3离text1左边缘的偏移距离
android:layout_marginLeft=“40dp”

还可以这样实现

  <?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"
    tools:context=".AlignController">
    <TextView
        android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="text1" />
    <TextView
        android:id="@+id/text2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@id/text1"
        android:layout_toLeftOf="@+id/text1"
        android:text="text2" />
    <TextView
        android:id="@+id/text3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@id/text1"
        android:layout_toRightOf="@+id/text1"
        android:text="text3" />
    <TextView
        android:id="@+id/text4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/text1"
        android:layout_toLeftOf="@+id/text1"
        android:text="text4" />
    <TextView
        android:id="@+id/text5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/text1"
        android:layout_toRightOf="@+id/text1"
        android:text="text5" />

</RelativeLayout>

相对父布局布局,这样一个页面实现如下
在这里插入图片描述

<?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"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:text="text1" />
    <Button
        android:id="@+id/text2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="text2" />
    <Button
        android:id="@+id/text3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="text3" />
    <Button
        android:id="@+id/text4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:text="text4" />
    <Button
        android:id="@+id/text5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:text="text5" />

</RelativeLayout>

摘选自《Android App开发从入门到精通》《第一行代码》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值