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

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

时间:2023-10-14 13:05:23浏览次数:32  
标签:入门教程 RelativeLayout 布局 视图 layout Android View

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

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 相对布局_Android_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零基础入门到精通,Android Studio安装教程+全套安卓基础教程

Android编程入门教程

Java语言基础从入门到熟悉

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

Kotlin语言基础从入门到熟悉

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

Android 技术栈从入门到熟悉

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

Android Jetpack 全家桶全面学习

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

对于新手来说可能安装Android Studio存在一定困难你可以看着以下视频,一步步的跟着学习安装运行

Android Studio 安装教程

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

有了Java阶段的学习,这一阶段建议以视频学习为主辅以图书查漏补缺。如果以图书为主,可以根据图书讲解敲代码,辅以教学视频查漏补缺。遇到问题可以去百度,入门的问题一般会有很多人遇到,并且给出比较好的解答。

需要掌握基本知识点,比如四大组件如何使用、如何创建Service、如何进行布局、简单的自定义View、动画、网络通信等常见技术。


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

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

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

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

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

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

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

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

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

相关文章

  • grid布局
    实现同时对行和列的控制1.指定每列的宽度.grid{displaya;grind;grid-template-colums:100px100px100px;} 2.用fr指定浮动宽度(fr是grid布局专有单位,类似于对整个盒子的宽度进行平等划分,1fr就是占一份).grid{display-template-colums:1fr1fr1fr;}补......
  • flask学习01-蓝图使用与项目布局
    蓝图blueprint蓝图也是一种规划,主要用来规划urls(路由route)蓝图的使用在views.py中初始化蓝图blue=Blueprint('user',name)在init文件中调用蓝图进行路由注册app.register_blueprint(blueprint=blue)views.py的代码#views.py文件用来存放视图函数+路由fromflaskimp......
  • 无涯教程-ASP.NET Core - Razor布局
    在本章中,无涯教程将了解“RazorLayout”视图,大多数网站和Web应用程序都希望创建呈现一些常见元素的页面。布局视图现在了解什么是布局视图。"Layout"视图是扩展名为*.cshtml的Razor视图,您可以选择以所需的方式命名布局视图,在本章中,将使用名为_Layout.cshtml。这是"Layou......
  • Android入门教程 | ImageView 图片显示
    为了让App界面更美观生动,我们可以放上图片。显示图片是“刚需”。不论是书籍,报纸,网站,都有显示图片的需求。毕竟“无图无真相”。在Android应用开发中,我们通常使用ImageView来显示图片。ImageView的主要属性ImageView的使用ImageView经常用来显示图片。例如直接显示drawable里......
  • Flex布局的三个属性要深刻理解!
    在我们日常开发中,flex布局可以说是家常便饭,对于很多的我们来说(你懂得^_^),可能我们用的比较多的应该就是垂直居中里,也就是下面这段代码:.flex-box{display:flex;justify-content:center;align-items:center;}写的非常好(^_^)!然后我们都知道这个是定义在父元素的,布局效果是......
  • 为什么 CSS flex 布局中没有 `justify-items` 和 `justify-self`?
    为什么CSSflex布局中没有justify-items和justify-self?为什么在CSSflex布局中存在align-items和align-self,却没有justify-items和justify-self呢?要解答这个问题,首先需要理解主轴(mainaxis)和交叉轴(crossaxis)之间的差异。1.主轴和交叉轴的区别在没有折行的情况......
  • Makefile 入门教程
    Makefile是一个非常强大的构建自动化工具,用于管理项目的编译、链接和其他构建任务。以下是一个详细的Makefile使用文档,包括基本概念、语法、示例和常见任务。1.基本概念目标(Targets):在Makefile中,目标是要生成的文件或执行的操作的名称。目标可以是文件名,也可以是伪目标......
  • PyQT5 PyQT入门教程(之三)
    REFhttp://code.py40.com/pyqt5/22.html 事件Event所有的GUI程序都是事件驱动的。事件主要由用户触发,但也可能有其他触发方式:例如网络连接、windowmanager或定时器。当我们调用QApplication的exec_()方法时会使程序进入主循环。主循环会获取并分发事件。在事件模型中,有三个参与......
  • PyQT5 PyQT入门教程(之二)
    REFhttps://www.jianshu.com/p/3832eb48f3d5 布局(Layout)管理QtDesigner中,在工具箱中最上方可以看到有4种布局。分别是垂直布局、水平布局、栅格布局和表单布局。  四种布局布局名称   布局含义垂直(Vertical)布局   布局内的控件按照从上到下的顺序纵向排列水平(Horizon......
  • PyQT5 PyQT入门教程(之一)
    REFhttps://www.jianshu.com/p/5b063c5745d0 本篇博客对应的视频讲解:https://www.bilibili.com/video/BV1NZ4y1Z7ue/ QtDesigner的介绍在PyQt中编写UI界面可以直接通过代码来实现,也可以通过QtDesigner来完成。QtDesigner的设计符合MVC的架构,其实现了视图和逻辑的分离,从而实现......