![Android移动应用项目化教程](https://wfqqreader-1252317822.image.myqcloud.com/cover/478/26179478/b_26179478.jpg)
相关知识
1.布局
Android设计中包括界面设计和代码编写两大部分,界面中常用的五大布局方式如下:
(1)LinearLayout
LinearLayout(线性布局)是一种常用的布局。这个布局会将它所包含的控件在线性方向上依次排列,如图2-3所示。
![](https://epubservercos.yuewen.com/7B01AF/14615889304586806/epubprivate/OEBPS/Images/img00037002.jpg?sign=1739300471-bYsMtHvu0Cln4K7J0HgUVksiVicEgylZ-0-5df938b806a04f4be2eebcfa751e510e)
图2-3 线性布局
![](https://epubservercos.yuewen.com/7B01AF/14615889304586806/epubprivate/OEBPS/Images/img00038001.jpg?sign=1739300471-L4JyeCm5g5lbo3tfolKCF9D4cRxuxq5X-0-dfbca6d67dcb2da1b2d1f42a18e58a46)
图2-3 线性布局(续)
LinearLayout具有4个极其重要的属性,直接决定元素的布局和位置:
①android:layout_gravity:本元素相对于父元素的重力方向。
②android:gravity:本元素所有子元素的重力方向。
③android:orientation:线性布局以列或行来显示内部子元素。
④android:layout_weight:子元素对未占用空间水平或垂直分配权重值。
当android:orientation="vertical"时,表示布局中的控件都是垂直分布的,且只有水平方向的设置才起作用,垂直方向的设置不起作用,即left、right、center_horizontal是生效的。
当android:orientation="horizontal"时,表示布局中的控件都是水平分布的,且只有垂直方向的设置才起作用,水平方向的设置不起作用,即top、bottom、center_vertical是生效的。
还有两个属性是使用频率最高的:android:layout_height和android:layout_width,一般有match_parent、warp_content和fill_parent选项:
①match_parent:强制性让它布满整个屏幕或填满父控件的空白。
②wrap_content:表示大小刚好足够显示当前控件中的内容。
③fill_parent:从Android 2.2开始之后的版本中fill_parent和match_parent表示的意思是一样的。
(2)FrameLayout
FrameLayout(帧布局)是从屏幕的左上角(0,0)坐标开始布局,多个组件层叠排列,第一个添加的组件放到最底层,最后添加到框架中的视图显示在最上面。上一层的会覆盖下一层的控件,如图2-4所示。
(3)TableLayout
TableLayout(表格布局)是一个ViewGroup以表格显示它的子视图(View)元素,即行和列标识一个视图的位置,如图2-5所示。
表格布局常用的属性如下:
①android:collapseColumns:隐藏指定的列。
②android:shrinkColumns:收缩指定的列以适合屏幕,不会溢出屏幕。
![](https://epubservercos.yuewen.com/7B01AF/14615889304586806/epubprivate/OEBPS/Images/img00039001.jpg?sign=1739300471-mQoUns7g0za5LNsq0cWbZV76d0oxe1l7-0-e28af54b32af0695c2475918b003643b)
图2-4 帧布局
![](https://epubservercos.yuewen.com/7B01AF/14615889304586806/epubprivate/OEBPS/Images/img00039002.jpg?sign=1739300471-395YCkSraQxdTYhTLfxmRIvpgXoOumq7-0-3d17c938eb69e9e2eedb5cb2fca78440)
图2-5 表格布局
③android:stretchColumns:尽量把指定的列填充空白部分。
④android:layout_column:控件放在指定的列。
⑤android:layout_span:该控件所跨越的列数。
(4)RelativeLayout
RelativeLayout(相对布局)是按照组件之间的相对位置来布局,例如在某个组件的左面、右面、上面和下面等,如图2-6所示。
RelativeLayout常用的属性如下:
①android:layout_centerHrizontal:水平居中。
②android:layout_centerVertical:垂直居中。
③android:layout_centerInparent:相对于父元素完全居中。
④android:layout_alignParentBottom:贴紧父元素的下边缘。
⑤android:layout_alignParentLeft:贴紧父元素的左边缘。
⑥android:layout_alignParentRight:贴紧父元素的右边缘。
![](https://epubservercos.yuewen.com/7B01AF/14615889304586806/epubprivate/OEBPS/Images/img00040001.jpg?sign=1739300471-NtVzcjp1FyTIMdgtEciTd9Aq5P9PLob6-0-72a013a3a92ea4680ebcb44205246d23)
图2-6 相对布局
⑦android:layout_alignParentTop:贴紧父元素的上边缘。
⑧android:layout_alignWithParentIfMissing:如果对应的兄弟元素找不到,就以父元素照物。
(5)GridLayout
GridLayout(网格布局)把整个容器划分为rows×columns个网格,每个网格可以放置一个组件,如图2-7所示。性能及功能都要比TableLayout好,例如GridLayout布局中的单元格可以跨越多行,而TableLayout则不行。此外,其渲染速度也比TableLayout要快。
![](https://epubservercos.yuewen.com/7B01AF/14615889304586806/epubprivate/OEBPS/Images/img00040002.jpg?sign=1739300471-OeJUyDt4b9cRuBGshmo8qeHKdz1fceUS-0-f2deef0591c96d99a3c8353f78485222)
图2-7 网格布局
GridLayout常用的属性如下:
①android:alignmentMode:设置该布局管理器采用的对齐模式。
②android:columnCount:设置该网格的列数量。
③android:rowCount:设置该网格的行数量。
④android:rowOrderPreserved:设置该网格容器是否保留行序号。
⑤android:useDefaultMargins:设置该布局管理器是否使用默认的页边距。