相对布局管理器RelativeLayout

RelativeLayout解析

相对布局管理器,通过id设置定位的基点,然后通过位置属性设置其他组件的位置,例如一个课室,首先定位小明的走作为,然后定位小红的座位的时候,可以使用使用“小红在小明前面”这类型的语句去定位小红的位置

RelativeLayout(相对布局管理器)的xml文件解析


<?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=".MainActivity"
    android:padding="16dp"
    android:gravity="center"
    android:ignoreGravity="@id/text_view"
    >
    
    <TextView
        android:id="@+id/text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"></TextView>

</RelativeLayout>

命名空间

  • xmlns:android=“http://schemas.android.com/apk/res/android”:表示android命名空间,也就是以下用的android:layout_width都是来自这个命名空间,相当于一个仓库
  • xmlns:app=“http://schemas.android.com/apk/res-auto”:app命名空间
  • xmlns:tools=“http://schemas.android.com/tools”:tools命名空间

上述一般是默认的,如果没有定义,那么就不能使用对应命名空间的东西,例如没有定义android命名空间,那么android:layout_width就无效

布局宽高

    android:layout_width="match_parent"
    android:layout_height="match_parent"

包括两个

  • match_parent:沾满父容器
  • wrap_parent:根据内容变化

其他布局控制

android:padding
    android:padding="16dp"

单位可以使用一般的单位,如16dp,也可以是尺寸资源的内容,可以写成

    android:padding="@dimen/cardview_compat_inset_shadow"
tools.context

tools.context

tools:context=".MainActivity"

指定使用该布局的activity

android:gravity

android:gravity是针对元素自身内部

android:layout_gravity

android:layout_gravity是相对与它的父元素说的,说明元素显示在父元素的什么位置

android:ignoreGravity
android:ignoreGravity="@id/text_view"

指定哪些元素不受gravity影响,上述指定id为text_view的布局组件不受影响

RelativeLayout.LayoutParams

为了更好控制子组件中的分布方式,可以使用内部类RelativeLayout.LayoutParams

确定位置

相对于某个组件的位置的上下左右
在这里插入图片描述

    <TextView
        android:text="Hello"
        android:id="@+id/hello"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"></TextView>

    <TextView
        android:text="world"
        android:layout_below="@id/hello"
        android:id="@+id/world"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"></TextView>

world在hello的下边
在这里插入图片描述

在布局中的水平居中、父容器居中、垂直居中
在这里插入图片描述
在这里插入图片描述

确定对齐方式

对齐父容器的下左右上
在这里插入图片描述
对齐某个组件的下左右上,如下world组件对齐hello组件的左侧

    <TextView
        android:text="Hello"
        android:id="@+id/hello"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"></TextView>

    <TextView
        android:text="world"
        android:layout_alignLeft="@id/hello"
        android:id="@+id/world"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"></TextView>

在这里插入图片描述

相对布局实例

1、需求:实现以下
在这里插入图片描述
2、控制文字在屏幕中央,然后再定位取消按钮相对位置是文字的右下,确定按钮相对按钮的左边,文字的下边

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

    >

    <TextView
        android:text="发现Android Studio新版本,是否需要更新"
        android:id="@+id/tip"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        ></TextView>

    <Button
        android:text="取消"
        android:layout_alignRight="@id/tip"
        android:layout_below="@id/tip"
        android:id="@+id/cancel"
        android:layout_width="80dp"
        android:layout_height="40dp"
        android:layout_marginLeft="10dp"
        android:textSize="10dp"></Button>

    <Button

        android:text="确定"
        android:layout_toLeftOf="@id/cancel"
        android:layout_below="@id/tip"
        android:id="@+id/confirm"
        android:layout_width="80dp"
        android:layout_height="40dp"
        android:textSize="10dp"
        ></Button>



</RelativeLayout>
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐