Android移动应用项目化教程
上QQ阅读APP看书,第一时间看更新

相关知识

1.布局

Android设计中包括界面设计和代码编写两大部分,界面中常用的五大布局方式如下:

(1)LinearLayout

LinearLayout(线性布局)是一种常用的布局。这个布局会将它所包含的控件在线性方向上依次排列,如图2-3所示。

图2-3 线性布局

图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:收缩指定的列以适合屏幕,不会溢出屏幕。

图2-4 帧布局

图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:贴紧父元素的右边缘。

图2-6 相对布局

⑦android:layout_alignParentTop:贴紧父元素的上边缘。

⑧android:layout_alignWithParentIfMissing:如果对应的兄弟元素找不到,就以父元素照物。

(5)GridLayout

GridLayout(网格布局)把整个容器划分为rows×columns个网格,每个网格可以放置一个组件,如图2-7所示。性能及功能都要比TableLayout好,例如GridLayout布局中的单元格可以跨越多行,而TableLayout则不行。此外,其渲染速度也比TableLayout要快。

图2-7 网格布局

GridLayout常用的属性如下:

①android:alignmentMode:设置该布局管理器采用的对齐模式。

②android:columnCount:设置该网格的列数量。

③android:rowCount:设置该网格的行数量。

④android:rowOrderPreserved:设置该网格容器是否保留行序号。

⑤android:useDefaultMargins:设置该布局管理器是否使用默认的页边距。