首页 > 其他分享 >Android入门教程 | UI布局之RelativeLayout 相对布局

Android入门教程 | UI布局之RelativeLayout 相对布局

时间:2023-10-05 16:32:17浏览次数:42  
标签:入门教程 layout 布局 视图 RelativeLayout android View

Android入门教程 | UI布局之RelativeLayout 相对布局_android

RelativeLayout 简述

RelativeLayout 继承于 android.widget.ViewGroup,按照子元素之间的位置关系完成布局,作为 Android 系统五大布局中最灵活也是最常用的一种布局方式,非常适合于一些比较复杂的界面设计。

RelativeLayout 和 LinearLayout 类似,都是 ViewGroup,能“容纳”多个子view。

RelativeLayout 是一个以相对位置显示子视图的视图组。每个视图的位置可以指定为相对于同级元素的位置(例如,在另一个视图的左侧或下方)或相对于父级 RelativeLayout 区域的位置(例如在底部、左侧或中心对齐)。

子 view 可以是 TextView,Button,或者是 LinearLayout,RelativeLayout 等等。 如果不添加其他配置,它们默认是在 RelativeLayout 的左上角。

在 RelativeLayout 中,子 View 可以根据另一个子 View 来确定位置。 但必须注意的是,RelativeLayout 和它的子 View 不能互相依赖。比如 RelativeLayout 设置高度为 wrap_content,子 View 设置了 ALIGN_PARENT_BOTTOM,这样你会发现 RelativeLayout 被撑到最大。 RelativeLayout 能消除嵌套视图组并使布局层次结构保持扁平化。

属性介绍

RelativeLayout 属性

Android入门教程 | UI布局之RelativeLayout 相对布局_子视图_02

RelativeLayout 可以指定子视图相对于父视图或彼此(由 ID 确定)的位置。因此,可以按照右边框对齐两个元素,或者使它们一上一下,屏幕居中,左侧居中,等等。默认情况下,所有子视图均绘制在布局的左上角,因此必须使用 RelativeLayout.LayoutParams 中提供的各种布局属性定义每个视图的位置。

有很多布局属性可用于 RelativeLayout 中的视图,部分示例包括:

android:layout_alignParentTop

如果为 "true",会将此视图的上边缘与父视图的上边缘对齐。

android:layout_centerVertical

如果为 "true",会将此子级在父级内垂直居中。

android:layout_below

将此视图的上边缘放置在使用资源 ID 指定的视图下方。

android:layout_toRightOf

将此视图的左边缘放置在使用资源 ID 指定的视图右侧。

示例:

为了让UI好看一点,先定义一下样式,在style.xml文件中新增一个style。

<style name="RelativeLayoutDemo1Item">
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_width">wrap_content</item>
    <item name="android:padding">4dp</item>
    <item name="android:background">@color/colorAccent</item>
    <item name="android:textColor">#ffffff</item>
    <item name="android:textSize">12sp</item>
</style>

示例1:

在layout中增加RelativeLayout与一些子View。 子View设置了不同的属性,分布在父View的上下左右中各个地方。

<RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="100dp">

        <TextView
            style="@style/RelativeLayoutDemo1Item"
            android:text="default" />

        <TextView
            style="@style/RelativeLayoutDemo1Item"
            android:layout_alignParentEnd="true"
            android:text="layout_alignParentEnd" />

        <TextView
            style="@style/RelativeLayoutDemo1Item"
            android:layout_centerInParent="true"
            android:text="layout_centerInParent" />

        <TextView
            style="@style/RelativeLayoutDemo1Item"
            android:layout_alignParentBottom="true"
            android:text="layout_alignParentBottom" />

        <TextView
            style="@style/RelativeLayoutDemo1Item"
            android:layout_alignParentEnd="true"
            android:layout_alignParentBottom="true"
            android:text="layout_alignParentBottom | End" />

    </RelativeLayout>

Android入门教程 | UI布局之RelativeLayout 相对布局_布局属性_03

示例2:

子View可以把另外的子View当做位置依据。

<RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="120dp">

        <TextView
            android:id="@+id/tv1"
            style="@style/RelativeLayoutDemo1Item"
            android:text="天" />

        <TextView
            android:id="@+id/tv2"
            style="@style/RelativeLayoutDemo1Item"
            android:layout_below="@id/tv1"
            android:layout_toEndOf="@id/tv1"
            android:text="天" />

        <TextView
            android:id="@+id/tv3"
            style="@style/RelativeLayoutDemo1Item"
            android:layout_below="@id/tv2"
            android:layout_toEndOf="@id/tv2"
            android:text="向" />

        <TextView
            android:id="@+id/tv4"
            style="@style/RelativeLayoutDemo1Item"
            android:layout_below="@id/tv3"
            android:layout_toEndOf="@id/tv3"
            android:text="上" />

    </RelativeLayout>

Android入门教程 | UI布局之RelativeLayout 相对布局_布局属性_04


标签:入门教程,layout,布局,视图,RelativeLayout,android,View
From: https://blog.51cto.com/u_16163452/7715141

相关文章

  • FreeRTOS入门教程(同步与互斥)
    (文章目录)前言前几篇文章一直在围绕FreeRTOS中的任务创建,删除,优先级,调度算法进行讲解,那么从本篇文章开始将围绕同步与互斥来展开讲解。一、同步与互斥概念当多个任务或线程共享资源并发执行时,同步和互斥是两个关键的概念。1.同步(Synchronization)是指协调多个任务或线程的执......
  • Spring Boot 入门教程
    大家好,我是深码青年,作为一名迄今为止已经有四年码龄的人来说,springboot已经深入了自己的脑子里面,所以借此机会,我们来仔细说一说关于springboot2.0的那些事儿一、SpringBoot是什么以下截图自[SpringBoot官方文档](https://spring.io/projects/spring-boot"SpringBoot官方......
  • 假设高度已知,请写出三栏布局,其中左栏、右栏宽度各为300px,中间自适应.
    浮动、绝对定位、flexbox、表格、网格布局.<stylemedia="screen">.layoutdiv{min-height:300px;}.layout.float{float:left;width:300px;background:red;}.layout.right{float:right;width:300px;background:blue;}.layout.center{background:yellow......
  • pyqt-核心布局
    1、直接启动or选择启动一些应用是基于同一个目录下的配置加载,以及日志写入同一目录。而另一些应用是根据目标或时间等分为不同的配置目录与日志目录。对于前者,那么自然的是启动程序,进行读取和加载。而后者可以是启动后读取加载上一状态,也可以是先进入开始窗口,选择新建或其它。2......
  • lesson6课堂练习与讲解 (布局实战)
     packagecom.zym.lesson6;importjava.awt.*;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;publicclassTestMixLayOut{publicstaticvoidmain(String[]args){Frameframe=newFrame("课堂练习,混合布局");......
  • Lesson2 GridLayOut 表格布局
     packagecom.kuang.lesson1;importjava.awt.*;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;publicclassTestGridLayout{publicstaticvoidmain(String[]args){Frameframe=newFrame("TestGridLayout")......
  • Flex布局【实战】
    实战:使用Flex布局构建如下界面分析:竖向:使用flex布局将页面分为三部分,即头部、主体和底部。其中头部和底部需要固定高度,其余的高度分配给主体部分(使用flex-direction=column;和flex-grow:1;)主体部分:使用flex布局排列多个卡片,这里可以使用uniapp提供的scroll-view......
  • flex 布局之左右边距对齐,换行左对齐2
    <!DOCTYPEhtml><html> <head> <metacharset="utf-8"> <title></title> </head> <styletype="text/css"> li{ list-style:none; } .List{ width:100%; box-sizing:borde......
  • C++引用10分钟入门教程
    C++引用10分钟入门教程< C++引用C++引用在本质上是什么,它和指针到底有什么区别? > 我们知道,参数的传递本质上是一次赋值的过程,赋值就是对内存进行拷贝。所谓内存拷贝,是指将一块内存上的数据复制到另一块内存上。对于像char、bool、int、float等基本类型的数据,它们占用的内......
  • Soul深度探索布局社交元宇宙,为行业发展提供新思路
    近年来,随着线上社交的高速发展,通过线上社交平台认识新朋友,成为Z世代群体的主流选择。数据显示,Z世代用户社交活跃占比高达83.6%,中国近70%的Z世代用户倾向线上社交。在此背景下,主打构建年轻人社交元宇宙的SoulApp,通过创新兴趣图谱建立关系和游戏化的产品设计,为用户打造一个......