Android学习笔记:UI组件之线性布局(LinearLayout)和相对布局(RelativeLayout)

就目前而言Android开发中最常用的两种布局就是线性布局和相对布局,所以我重点记录了线性布局和相对布局,其他也只是大致了解,下面我会在先记录概念然后实例中去分别写这两种布局
因为我个人学习当中在看《第一行代码》这本书,所以可能会引用很多书中的内容,但我也会加上我个人的理解
首先先解释一下布局和控件以及两者的关系
一个丰富的界面是由很多个控件组成的,而为了让界面看起来尽可能地美观,我们需要布置控件,这个时候我们就需要用到布局来管理了,布局是一种可以用于放置很多控件的容器,布局中也可以嵌套布局

LinearLayout

定义

LinearLayout又被称作是线性布局,此布局会将它所包含的控件在线性方向上依次排列,那么这个线性方向就包含了垂直方向和水平方向,下面我会具体来介绍一些属性

常用属性(不仅仅是LinearLayout常用的,其他如Button、TextView等都会很常用)
属性作用
android:id设置一个本字段的专属id,是一个标识,我们可以通过这个id来找到这个布局空间
android:orientation设置线性布局是在哪个方向,vertical是垂直方向,horizontal是水平方向
android:layout_width布局宽度
android:layout_height布局高度
android:layout_background布局背景,可以设置颜色,也可设置图片,也可以通过xml文件自己画
android:layout_margin外边距,距离外部元素边距
android:layoutpadding内边距,距离内部元素边距
代码样例

创建一个EmptyActivity,进入activity_main.xml文件中,将布局改成LinearLayout,将宽度设置成匹配父控件,这里引申一点
设置控件宽和高的时候,可以自己设置具体的大小如100dp,200dp(为什么不是px?也可以是px,但是手机的碎片化太严重了,在设计的时候使用px为单位,在不同的手机上可能会出现不同的效果,所以在AS中采用了dp,也它可以自动去匹配所定义的大小),除了自定义也可以选择wrap_content或者是match_parent这两种属性,那么分别是什么意思呢
wrap_content:包含内容,也就是内容有多长,控件就有多长
match_parent:匹配父控件,也就是与父控件保持一致

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical">
    <LinearLayout
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="#000000"
         />
</LinearLayout>

在这里插入图片描述
在xml文件中输入以上代码时,旁边的展示板就会出现相应的布局展示,目前我把其中一个布局改成黑色,所以出来就是主布局中嵌套这=着一个小的布局,而我将这个小的布局长宽设置成了100dp,出来的样式是这样的,那么如何让这个小的布局具有居中,或者和外面的大布局有一个边距呢
在最外面的一层布局上将padding的设置一下

android:padding="15dp"

在这里插入图片描述
这样里面那一层布局就会相对的和最外层布局有15个dp的边距
那么怎样居中呢
只需要在最外层的布局中添加一个属性

android:gravity="center"

在这里插入图片描述
当然这个属性还有很多值,感兴趣的可以挨个试试(反正我是挨个去试了一遍==)

这本身就是两个布局的嵌套,接下来我们来尝试一下再嵌套一个布局进去
在这里插入图片描述
因为在最底层布局设置的是垂直的线性布局,因此,这两个布局呈垂直分布,而如果我们将 android:orientation="vertical"这个值设置成horizontal,我们可以来看看效果
在这里插入图片描述
经过试验是不是对这个布局有一些了解了呢?
总之他还有非常多的属性值得我们去研究,这过程是非常有趣的,关于线性布局我就写到这里。

RelativeLayout

RelativeLayout又称作相对布局,和LinearLayout的排列规则不同,RelativeLayout的排列更加随意一点,它可以通过相对定位的方式让控件出现在布局任何位置,正因为此它的属性非常多。
上一篇在讲LinearLayout的博客中android:id这个属性的作用还看不太出来,那么在RelativeLayout中id就会显得非常重要,因为我们经常是通过id去获取布局,然后定义下一个布局的位置。
这个时候我们来举个栗子,在这个布局中,如果不获取相对位置,直接排列的话会出现什么结果

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical">
     <RelativeLayout
         android:id="@+id/rl_1"
         android:layout_width="100dp"
         android:layout_height="100dp"
         android:background="#000000"
         android:orientation="vertical"
          />
     <RelativeLayout
         android:id="@+id/rl_2"
         android:layout_width="100dp"
         android:layout_height="100dp"
         android:orientation="vertical"
         android:background="#00FFFF"/>
     <RelativeLayout
         android:id="@+id/rl_3"
         android:layout_width="100dp"
         android:layout_height="100dp"
         android:background="#B32BD5"/>
</RelativeLayout>

如代码中所示,在一个布局中嵌套三个布局,如果在LinearLayout中,这三个布局就是呈线性排开的,那么在这里呢?
在这里插入图片描述
对。没错,他们会依次覆盖,所以怎样将他们排开呢,这个时候RelativeLayout中提供了很多属性供我们参考,这里全部用到了id来获取控件
在这里插入图片描述
这其实很简单不需要太多赘述。
之后的一系列其实自己研究即可,这个非常简单。

总结下来其实就是这跟CSS布局很像,如果说有前端的基础,还有Java的基础,入门Android非常的简单,当然我只是说入门。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值