Android常用的5中基本布局
Android的基本布局是搭建Android界面很重要的一环,你所有的控件都必须在布局基本布局下面来控制,选择合适的布局,对你的界面搭建有很大的帮助。
这5中基本布局是:
- LinearLayout(线性布局)
- RelativeLayout(相对布局)
- FrameLayout(帧布局)
- AbsoluteLayout(绝对布局)
- TableLayout(表格布局)
现在还有一种新的布局叫ConstraintLayout(约束布局),这几种布局中,我们在项目中常用的是LinearLayout、RelativeLayout、FrameLayout,对于ConstraintLayout现在开始慢慢普及,可以去了解一下,其他两种布局,在项目中使用率并不是很多,阿杰的项目中好像是没有使用过这两种布局方式。所有的布局都有2个必须要有的属性,就是宽(android:layout_width="match_parent")高(android:layout_width="layout_height"),对于后面的值,阿杰这里举例用的是match_parent,这个代表充满整个手机屏幕,还有wrap_content(根据布局里面的控件自适应宽高),意思就是说,布局里面的内容有多大,这个布局就有多大。当然,还可以自己设置固定的尺寸,比如100dp,20dp,都可以。
1、LinearLayout(线性布局)
线性布局,何为线性,线性、线性,有像线一样的性质,哈哈,阿杰自己的记忆模式,大家不用照仿。LinearLayout有两种模式来控制它里面的控件排列方式,一种是垂直模式(android:orientation="vertical"),一种是水平模式(android:orientation="horizontal" ),当我们把模式设置为垂直模式时,在手机屏幕上,里面的控件会竖直排列下来,且每一排只能有一个控件,当我们设置为水平模式时,在手机屏幕上,这个布局只有一排,但是可以有多个控件排成一排。
- android:orientation 属性指定了排列方向是 vertical,如果指定的是horizontal,控件就会在水平方向上排列了。
- android:gravity 是用 于指定文字在控件中的对齐方式
- android:layout_gravity 是用于指定控件在布局中的对齐方式
- android:layout_weight="1"(权重分布),这个weight在垂直布局时,代表行距;水平的时候代表列宽;weight值越大就越大。
- android:visibility=invisible控制布局是否显示 :1、显示 visible 2、不显示,但占空间 invisible 3、隐藏 gone
2、RelativeLayout(相对布局)
是一种相对布局,控件的位置是按照相对位置来计算的,后一个控件在什么位置依赖于前一个控件的基本位置,是布局最常用,也是最灵活的一种布局。
常用属性:
- android:id --- 为控件指定相应的ID
- android:text --- 指定控件当中显示的文字,需要注意的是,这里尽量将文字写到strings.xml文件中引用
- android:grivity --- 指定控件的基本位置,比如说居中,居右等位置这里指的是控件中的文本位置并不是控件本身
- android:textSize --- 指定控件当中字体的大小
- android:background --- 指定该控件所使用的背景色,RGB命名法
- android:width --- 指定控件的宽度
- android:height --- 指定控件的高度
- android:padding --- 指定控件的内边距,也就是说控件当中的内容
- 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的右边缘对齐;
- android:layout_alignParentTop 如果为true,将该控件的顶部与其父控件的顶部对齐;
- android:layout_alignParentBottom 如果为true,将该控件的底部与其父控件的底部对齐;
- android:layout_alignParentLeft 如果为true,将该控件的左部与其父控件的左部对齐;
- android:layout_alignParentRight 如果为true,将该控件的右部与其父控件的右部对齐;
- android:layout_centerHorizontal 如果为true,将该控件的置于水平居中;
- android:layout_centerVertical 如果为true,将该控件的置于垂直居中;
- android:layout_centerInParent 如果为true,将该控件的置于父控件的中央;
还有很多属性,大家可以去写一下,可以研究一下。
3、FrameLayout(帧布局)
FrameLayout对象好比一块在屏幕上提前预定好的空白区域,可以将一些元素填充在里面,如图片。所有元素都被放置在FrameLayout区域的最左上区域,而且无法为这些元素制指定一个确切的位置,若有多个元素,那么后面的元素会重叠显示在前一个元素上。
4、AbsoluteLayout(绝对布局)
绝对布局极少使用,在不是绝对要使用的情况下就绝对不要用
5、TableLayout(表格布局)
TableLayout是指将子元素的位置分配到行或列中。Android的一个TableLayout有许多TableRow组成,每一个TableRow都会定义一个Row。TableLayout容器不会显示Row,Column,及Cell的边框线,每个Row拥有0个或多个Cell,每个Cell拥有一个View对象。在使用tablelayout时,应注意每一个cell的宽度。