一个丰富的界面是由多个控件组成的,想写出一个精美的界面我们就会涉及到多层布局嵌套,接下来开始学习Android 中最常用的三种布局。
4.3.1 LinearLayout
LinearLayout 又叫线性布局,是非常常用的布局,在这个布局内的文件会根据 android:orientation 这个属性来进行排列。有两种排列方式,一种是横向排列,在横向排列的时候,每个控件在布局内都会占用一列。另一种是垂直排列,垂直排列的时候每个控件在布局内都会占用一行。 设置 vertical 是垂直 ,horizontal 是横向。
介绍几个比较重要的属性,android:layout_gravity 这个属性是设置控件在父布局的位置, android:gravity 这个是设置控件自身内容在自己空间中的位置,android:layout_weight 是设置自身在父布局剩余空间的占比,也叫权重,前提是根据LinearLayout 父布局设置的排列方向,来设置 子控件的adnroid:layout_height = 0dp 或 android:layout_width = 0dp 。一旦设置android:layout_weight 属性后 控件的 height 或者 width 就会根据 其他控件剩余的空间进行自动设置大小! 如果多个控件设置 android:layout_weight 那么最大数值的占用空间最多!Ps:这几个属性都是设置在子控件上的。
4.3.2 RelativeLayout
RelativeLayout 又叫相对布局,很好理解就是,子控件相对子控件的位置,或者相对父布局的位子。在xml 中RelativeLayout的子控件带有Paren 字眼的属性就是相对父布局的位置:
android:layout_centerHrizontal 水平居中
android:layout_centerVertical 垂直居中
android:layout_centerInparent 相对于父控件完全居中
android:layout_alignParentBottom 贴紧父控件的下边缘
android:layout_alignParentLeft 贴紧父控件的左边缘
android:layout_alignParentRight 贴紧父控件的右边缘
android:layout_alignParentTop 贴紧父控件的上边缘
android:layout_alignWithParentIfMissing 如果对应的兄弟控件找不到的话,就以父控件作为参照物
而且相对同类子控件位置的则有:
android:layout_below 在某控件下方
android:layout_above 在某控件上方
android:layout_toLeftOf 在某控件的左边
android:layout_toRightOf 在某控件的右边
android:layout_alignTop 本控件的上边缘和某控件的上边缘对齐
android:layout_alignLeft 本控件的左边缘和某控件的左边缘对齐
android:layout_alignBottom 本控件的下边缘和某控件的下控件对齐
android:layout_alignRight 本控件的右边缘和某控件的有边缘对齐
4.3.3 FrameLayout
FrameLayout 又叫做帧布局,这个比较简单和相对布局比较像是,但是没有相对属性,子控件默认都在左上角,多个子控件会在左上角开始叠加排列,可以通过android:layout_gravity 进行设置其在父控件的位置。