注:例如<Button   在此处放置属性/>和<Button>在此处放置属性</Button>并无区别,只是写法不同而已,这是xml文件的结构。只需知道/代表标签结束即可。

常用布局:

线性布局(LinearLayout):在水平或垂直方向依次摆放控件的布局。

重要属性:android:orientation(方向) 有vertical(垂直)和horizontal(水平)

android:layout_weight(权重)

android:layout_gravity(重力):当前控件相对于父容器控件在哪里。

其中有center_horizontal(水平中间),center_vertical(垂直中间),bottom(下方),center(中间),top(上方),left(左方),right(右方)若想两个连用则可以在两个之间加一个竖线,例如center_horizontal|center_vertical

相对布局(RelativeLayout):依照参照物定位的布局,也是几个布局中最灵活的布局。

重要属性:android:layout_alignParentRight:是否与父容器的右边线对齐,处于右上(取值只有true和false)

android:layout_alignParentLeft:是否与父容器的左边线对齐,处于左上(取值只有true和false)

android:layout_alignParentTop:是否与父容器的上边线对齐,处于左上(取值只有true和false)

android:layout_alignParentBottom:是否与父容器的下边线对齐,处于左下(取值只有true和false)

android:layout_centerHorizontal:是否要在父容器里面水平居中,会出现在最上方中间

android:layout_centerVertical:是否要在父容器里面垂直居中,会出现在最左方中间

android:layout_centerInParent:是否在父容器中居中

下方属性是以其他控件为参照物,他们的取值都是引用其他控件的id。

android:layout_toLeftOf:在参造物的左边

android:layout_toRightOf:在参造物的右边

android:layout_below:在参造物的下边

android:layout_above:在参造物的上边

android:layout_alignRight:和某控件的右边线对齐

android:layout_alignLeft:和某控件的左边线对齐

android:layout_alignBottom:和某控件的下边线对齐

android:layout_alignTop:和某控件的上边线对齐

帧布局(FrameLayout)

重要属性:android:layout_gravity(控件重力):当前控件相对于父容器控件在哪里。

android:gravity:内容相对于控件本身的位置。

android:foreground(前景)

android:foregroundGravity(前景重力):设置前景位置。

表格布局(TableLayout)

如果直接在TableLayout中添加控件,那么控件将和父容器等宽。

如果想让控件出现在同一行,那么这些控件的外层一定要加一对<TableRow></TableRow>。

在TableRow中的控件,宽度都是默认wrap_content。

重要属性:android:stretchColumns:可以伸展的列,传的是一个整型数据,代表所在列的索引值,若想改变多个列的值则可以将多个数据用逗号隔开,例如:1,2,3,若想改变全部列的值可以“*”表示。

android:shrinkColumns:可以收缩的列,传的是一个整型数据,代表所在列的索引值,若想改变多个列的值则可以将多个数据用逗号隔开,例如:1,2,3,若想改变全部列的值可以“*”表示。

android:collapseColumns:可以隐藏的列,传的是一个整型数据,代表所在列的索引值,若想改变多个列的值则可以将多个数据用逗号隔开,例如:1,2,3。

如果直接在表格布局中添加控件,那么控件将会和父容器等宽,如果想让控件出现在同一行,那么这些控件的外层一定要加一对<TableRow>,在TableRow中的控件,宽度都是默认wrap_content。

网格布局(GirdLayout):完成作用与表格布局很类似,但是网格布局可以自定义行列。

重要属性:android:rowCount(行数量)

android:columnCount(列数量)

android:layout_row(位于第几行)

android:layout_column(位于第几列)

android:layout_rowSpan(跨几行)

android:layout_columnSpan(跨几列)

注:若要跨列跨行时要搭配android:layout_gravity="fill"使用,使其出现视觉效果。

约束布局:

重要属性:app:layout_constraintBottom_toBottomOf(约束当前view的底部位置到另一个控件或容器的底部位置)

注:两个Bottom都是可以替换的,可以替换为Left、Right、Top等,其中前一个指当前控件的某位置,后一个指到某一控件的某位置。属性值为父容器或其它控件的id值。

app:layout_constraintHorizontal_bias:水平偏移量,取值为0-1,默认取值为0.5。

app:layout_constraintVertical_bias:垂直偏移量,取值为0-1,默认取值为0.5。

水平、垂直偏移量可用于控制该控件处于何处,当设置过水平、垂直偏移量后,可不用再用layout_marginTop等改变位置。

inspector的认识:

其中方框四边的数字代表可移动范围距离边角有多远。例如若为0,则表示可移动至边角,若为8,则表示可移动范围举例边角还有8。

Android 约束布局链路 android约束布局例子_控件

Android 约束布局链路 android约束布局例子_android_02

 

Android 约束布局链路 android约束布局例子_控件_03

 

图一表示指定一个固定的宽度和高度,而其中图二表示layout_width和layout_height均为wrap_content,而图三表示layout_width和layout_height均为0dp,填充范围。

xml文件中的倾斜手机图标中的landscape可将界面设置为横屏。

app:layout_contraint本源_to目标="目标id"