七大基本布局的继承关系
Android布局的XML关系图
转
而工作上常用的是其中的LinearLayout(线性布局)、RelativeLayout(相对布局)、FrameLayout(层布局)以及ConstraintLayout(约束布局)。
这几个当中ConstraintLayout(约束布局)我们可以理解为增强版/升级版的相对布局(RelativeLayout)。Android Studio 从版本2.3开始创建xml默认的根布局就是约束布局,那么既然已经有相对布局了,为什么还要用约束布局呢?最核心就是:让布局扁平化,减少布局嵌套的层次,提高渲染效率,提升应用性能。可是在具体应用中我们还是少不了LinearLayout(线性布局)、RelativeLayout(相对布局)的一些嵌套使用,在不要求高宽比和一些特殊显示的情况下我都很容易就选择使用了传统的布局构建。所以我们介绍一下LinearLayout(线性布局)、RelativeLayout(相对布局)的一些属性:
LinearLayout(线性布局)
“android:orientation” 控制方向
属性值: 垂直 (vertical) 和水平(horizontal) ,默认水平方向。
“android:gravity:” 内部控件对齐方式
常用属性值: center、center_vertical、center_horizontal、top、bottom、left、right等。
注: android:gravity 在布局组件 RelativeLayout、TableLayout 中也有使用,其中,在 FrameLayout、AbsoluteLayout 则没有这个属性。
center: 居中显示
注: 这里并不是表示显示在 LinearLayout 的中心,当 LinearLayout 线性方向为垂直方向时,center 表示水平居中,但是并不能垂直居中,此时等同于 center_horizontal 的作用;同样当线性方向为水平方向时,center 表示垂直居中,等同于 center_vertical。top、bottom、left、right 顾名思义为内部控件居顶、低、左、右布局。这里要与 android:layout_gravity 区分开,layout_gravity 是用来设置自身相对于父元素的布局。
android:layout_weight: 权重,用来分配当前控件在剩余空间的大小。
注: 使用权重一般要把分配该权重方向的长度设置为零,比如在水平方向分配权重,就把 width 设置为零。
RelativeLayout(相对布局)
可以替换一些嵌套视图,当我们用 LinearLayout 来实现一个简单的布局但又使用了过多的嵌套时,我们常常就会使用RelativeLayout重新布局。(过多嵌套会导致性能变差) 1、相对于父控件,例如:android:layout_alignParentTop=“true”
android:layout_alignParentTop <!--控件的顶部与父控件的顶部对齐--> android:layout_alignParentBottom<!-- 控件的底部与父控件的底部对齐--> android:layout_alignParentLeft <!--控件的左部与父控件的左部对齐--> android:layout_alignParentRight <!--控件的右部与父控件的右部对齐-->
2、相对给定Id控件:
android:layout_above <!--控件的底部置于给定ID的控件之上--> android:layout_below <!--控件的底部置于给定ID的控件之下--> android:layout_toLeftOf <!-- 控件的右边缘与给定ID的控件左边缘对齐--> android:layout_toRightOf <!--控件的左边缘与给定ID的控件右边缘对齐--> android:layout_alignBaseline <!--控件的baseline与给定ID的baseline对齐--> android:layout_alignTop <!--控件的顶部边缘与给定ID的顶部边缘对齐--> android:layout_alignBottom <!--控件的底部边缘与给定ID的底部边缘对齐--> android:layout_alignLeft <!--控件的左边缘与给定ID的左边缘对齐--> android:layout_alignRight <!--控件的右边缘与给定ID的右边缘对齐-->
3、居中:
android:layout_centerHorizontal <!--水平居中--> android:layout_centerVertical <!--垂直居中--> android:layout_centerInParent <!--父控件的中央-->
落
每天记录一些基础知识,这样就不会忘却它们,否则有些时候经常不知道该去使用哪个属性去控制,另外就是需要多加练习,用的多自然就熟练,后续还会增加其他布局的相关知识点与理解。