Android 布局系列(三):RelativeLayout 利用指南

打印 上一主题 下一主题

主题 998|帖子 998|积分 2994

 布局系列
Android 布局系列(一):LinearLayout 利用指南-CSDN博客
Android 布局系列(二):FrameLayout 布局的应用-CSDN博客
Android 布局系列(三):RelativeLayout 利用指南_relativelayout布局如何利用-CSDN博客
Android 布局系列(四):ConstraintLayout 利用指南-CSDN博客
Android 布局系列(五):GridLayout 网格布局的利用-CSDN博客
Android布局系列(六):TableLayout 表格布局的利用-CSDN博客

引言

在 Android 开发中,布局管理是构建用户界面的焦点。RelativeLayout 曾经是 Android 中非常盛行的一种布局方式,广泛应用于各种项目中。它通过相对位置关系构造视图元素,使得我们可以根据父容器或者其他视图的位置来灵活调解子视图的布局。与 LinearLayout 和 ConstraintLayout 差异,RelativeLayout 更夸大视图之间的相对关系,恰当于一些简单的相对定位布局。
尽管 ConstraintLayout 在现代 Android 开发中渐渐成为主流,但 RelativeLayout 仍旧在某些场景中具有不可替代的优势。本文将深入探讨 RelativeLayout 的利用方法、常用属性以及典型的应用场景,帮助你更好地理解这一布局工具的优势与局限。
RelativeLayout 的基本概念和用途

RelativeLayout 是Android中的一种布局方式,它允许子视图根据相对位置关系来布局,而不像LinearLayout 那样将视图按次序排列。通过设置每个子视图与父容器或其他视图的相对位置,RelativeLayout 使得布局更加灵活,恰当处置惩罚一些不规则和复杂的视图布局需求。
RelativeLayout 的焦点思想是,通过属性设置来确定每个视图的位置。例如,某个视图可以相对于父布局的顶部、底部、左侧、右侧对齐,也可以相对于其他子视图的位置来确定自己的位置。这种相对定位使得布局可以或许更加自由和动态。
常见的利用场景:
1. 简单的对齐需求:
好比,在屏幕的顶部放置一个标题,中心 放置一个图像,底部在放置一个按钮,RelativeLayout 能非常方便地处置惩罚这种场景,通过设置子视图与父容器的对齐关系来实现。
2. 视图之间的相对位置:
我们可以很轻易地让一个按钮位于另一个按钮的右边,或让一个文本框位于一个图像的下方。只需指定相对于其他视图的位置,而不需要通过嵌套的布局来实现。
3. 复杂的UI排列:
对于一些具有相对关系的复杂布局,RelativeLayout 可以通过减少视图层级的嵌套来提高性能,并保持布局的清晰和可维护性。
相比于别的布局,RelativeLayout通过直接指定相对位置来减少视图的层级,提高性能,由于它提供了多种对齐方式,所以也提高了布局的灵活性。
RelativeLayout 的常用属性


RelativeLayout由于其灵活的特性,因此它的属性相对于LinearLayout也要多一些。接下来,我们将这几个常用的属性分为五部分进行详细先容。
1. 基本属性

基本属性有两个gravity和ignoreGravity。


  • gravity:这个属性控制视图在其父容器中的对齐方式。它雷同于LinearLayout中的android:gravity,不外需要留意的是在RelativeLayout中,gravity是控制子视图的内容如安在其自身的框架内对齐。例如 android:gravity="center" 会让视图的内容在其自身内居中对齐,而不管它在父容器中的位置。
  • ignorGravity:当设置为true时,它会使得视图忽略gravity属性的影响,这通常用于某些特殊需求的场景,例如,假如你盼望视图内的内容不受父容器gravity的影响,但仍旧使其位置相干的属性如 layout_alignParentTop。
2. 根据父容器定位的属性

这些属性使得你可以根据父容器的界限来定位子视图的位置。


  • layout_alignParentTop:将视图的顶部与父容器的顶部对齐。
  • layout_alignParentLeft:将视图的左边与父容器的左边对齐。
  • layout_alignParentRight:将视图的右边与父容器的右边对齐。
  • layout_alignParentBottom:将视图的底部与父容器的底部对齐。
  • layout_centerInParent:将视图居中于父容器。
  • layout_centerHorizontal:将视图水平居中于父容器。
  • layout_centerVertical:将视图垂直居中于父容器。
这些属性非常适适用来做一些基本的对齐和定位,好比将一个按钮固定在屏幕底部,或者将一个视图居中表现。
3. 根据兄弟组件定位的属性

通过这些属性,自视图可以相对于其他子视图进行定位,


  • layout_toLeftOf:将视图放置在另一个视图的左侧。
  • layout_toRightOf:将视图放置在另一个视图的右侧。
  • layout_above:将视图放置在另一个视图的上方。
  • layout_blow:将视图放在另一个视图的下放。
  • layout_alignTop:将视图的顶部与另外一个视图对齐。
  • layout_alignLeft:将视图的左侧与另外一个视图对齐。
  • layout_alignRight:将视图的右侧与另外一个视图对齐。
  • layout_alignBottom:将视图的底部与另外一个视图对齐。
这些属性在处置惩罚相对位置时非常方便,特殊是当你盼望一个视图与另一个视图保持相对位置时。
4. margin 偏移

margin 属性用于设置视图的外边距,也就是视图与其相对应的兄弟元素或者父容器之间的距离。


  • layout_marginTop:视图上方的外边距。
  • layout_marginLeft:视图左侧的外边距。
  • layout_marginRight:视图右侧的外边距。
  • layout_marginBottom:视图底部的外边距。
这些属性可以用来调治视图之间的隔断,让布局更加灵活。例如,可以通过 layout_marginTop 给按钮添加与上面视图的间距。
5. padding 的填充

padding 属性用于控制视图内部内容的填充,即视图的边框与其内容之间的距离。


  • android:paddingTop:视图顶部内容的填充。
  • android:paddingLeft:视图左侧内容的填充。
  • android:paddingRight:视图右侧内容的填充。
  • android:paddingBottom:视图底部内容的填充。
通过设置差异的 padding 值,你可以调解视图内部内容的位置,使其不会紧贴视图的边缘。
RelativeLayout 的利用示例

我们就以一个梅花布局为案例,它既能展示RelativeLayout 的强大布局能力,又可以或许表现其灵活性和相对定位的优势。
首相将布局分成两个部分:

  • 中央的视图:放在屏幕的正中心。
  • 四个角落的视图:每个方向上各放置一个视图。
具体代码实现如下:
  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2.     android:id="@+id/main"
  3.     android:layout_width="match_parent"
  4.     android:layout_height="match_parent">
  5. <!--    中心视图-->
  6.     <TextView
  7.         android:id="@+id/center"
  8.         android:layout_width="100dp"
  9.         android:layout_height="100dp"
  10.         android:textAlignment="center"
  11.         android:text="中心"
  12.         android:background="#FF0000"
  13.         android:layout_centerInParent="true"/>
  14. <!--    顶部视图-->
  15.     <TextView
  16.         android:layout_width="100dp"
  17.         android:layout_height="100dp"
  18.         android:textAlignment="center"
  19.         android:text="上"
  20.         android:background="#FFF000"
  21.         android:layout_above="@+id/center"
  22.         android:layout_centerHorizontal="true"/>
  23. <!--    左侧视图-->
  24.     <TextView
  25.         android:layout_width="100dp"
  26.         android:layout_height="100dp"
  27.         android:textAlignment="center"
  28.         android:text="左"
  29.         android:background="#FFF000"
  30.         android:layout_toLeftOf="@+id/center"
  31.         android:layout_centerVertical="true"/>
  32. <!--    右侧视图-->
  33.     <TextView
  34.         android:layout_width="100dp"
  35.         android:layout_height="100dp"
  36.         android:textAlignment="center"
  37.         android:text="右"
  38.         android:background="#FFF000"
  39.         android:layout_toRightOf="@+id/center"
  40.         android:layout_centerVertical="true"/>
  41. <!--    底部视图-->
  42.     <TextView
  43.         android:layout_width="100dp"
  44.         android:layout_height="100dp"
  45.         android:textAlignment="center"
  46.         android:text="下"
  47.         android:background="#FFF000"
  48.         android:layout_below="@+id/center"
  49.         android:layout_centerHorizontal="true"/>
  50. </RelativeLayout>
复制代码

  • 中心视图:利用android:layout_centerInParent="true" 保证视图居中表现。
  • 顶部视图:利用android:layout_above="@+id/center",将视图放置到中心视图的下方,利用android:layout_centerHorizontal="true" 确保它水平居中。
  • 左侧视图:利用android:layout_toLeftOf="@+id/center",将视图放置到中心视图的左侧,利用android:layout_centerVertical="true" 确保它垂直居中。
  • 右侧视图:利用android:layout_toRightOf="@id/center",将视图放置到中心视图的右侧,利用android:layout_centerVertical="true" 确保它垂直居中。
  • 底部视图:利用android:layout_below="@id/center",将视图放置到中心视图的下方,利用 android:layout_centerHorizontal="true" 确保它水平居中。
结果如下:

通过这种方式,所有视图将会围绕中心视图进行排列,达到上下左右的结果,但是呢现在的情况看上去并不是十分雅观,我们可以通过margin 来设置一些它们之间的间距。以顶部视图和左侧视图为例,代码如下:
  1. <!--    顶部视图-->
  2.     <TextView
  3.         android:layout_width="100dp"
  4.         android:layout_height="100dp"
  5.         android:textAlignment="center"
  6.         android:text="上"
  7.         android:background="#FFF000"
  8.         android:layout_above="@+id/center"
  9.         android:layout_centerHorizontal="true"
  10.         android:layout_marginBottom="40dp"/>
  11. <!--    左侧视图-->
  12.     <TextView
  13.         android:layout_width="100dp"
  14.         android:layout_height="100dp"
  15.         android:textAlignment="center"
  16.         android:text="左"
  17.         android:background="#FFF000"
  18.         android:layout_toLeftOf="@+id/center"
  19.         android:layout_centerVertical="true"
  20.         android:layout_marginRight="40dp"/>
复制代码

  • 顶部视图:通过android:layout_marginBottom="40dp"设置它距离下面40dp,也就是向上移动。
  • 左侧视图:通过 android:layout_marginRight="40dp"设置它距离右侧40dp,也就是向左移动40dp。
右侧视图和底部视图同理,全都设置完成后结果如下:

结语

通过本次示例,我们可以看到,虽然利用 RelativeLayout 来实现一个“上下左右”布局并不难,但要达到精确的对齐结果,我们需要理解并熟练运用 RelativeLayout 中的各种布局属性。掌握这些属性的利用,可以或许让我们在设计布局时更加灵活和高效。
当然,随着布局需求的复杂化,灵活利用这些属性是提高开发服从的关键。只要多加练习,并根据现实需求进行调解,你将能快速实现各种复杂的布局结果。
布局的设计不但仅是对技能的掌握,更是对细节的关注。多用、多实践,你会发现 RelativeLayout 作为一个强大而灵活的布局工具,在 Android 开发中能带来很大的便利。



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

钜形不锈钢水箱

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表