- 布局文件的意义
Android中主要用来定义UI界面的一种方式是利用xml布局文件
布局文件必须放到res/layout目录下
ViewGroup.LayoutParams提供两个XML属性设定组件的大小。
android:layout_height:指定该子组件的基本高度;
android:layout_width:指定该子组件的基本宽度。
布局的本质还是一种视图(view),都是继承了布局管理器(ViewGroup)的类
所以布局中也可以添加布局
属性 描述
ID 控件名字,是当前控件的唯一标识,常用字符串表示
background 调整当前界面背景
gravity 调整所有控件所在的整体位置
layout_width 当前界面整体宽度,常用wrap_content和match_parent
layout_height 当前界面整体高度,常用wrap_content和match_parent
padding 调整屏幕边距,可以整体调整或者单项调整
text 控件显示文本,可调用values文件夹中的strings.xml来显示文本内容
textColor 显示文本颜色,可调用values文件夹中的color.xml来定义
textSize 显示文本字体大小,单位常用dp和px
textStyle 显示文本字体风格,可选的有斜体和粗体
- FrameLayout(帧布局)
帧布局也叫层叠布局,从屏幕左上角按照层次先后顺序堆叠方式布局,后面的控件覆盖在前面的控件之上。
因为层叠的特殊性,常常用在做透明蒙层类的功能上,比如地图的控制层,播放器的控制层等。
- LinearLayout(线性布局)
线性布局是将子组件按照先后顺序排列的布局,具有垂直方向与水平方向的布局方式,通过设置属性“android:orientation”控制方向,属性值垂直(vertical)和水平(horizontal),如果不设置该属性,默认为水平方向。
android:layout_weight:权重,用来分配当前控件在剩余空间的大小。
使用权重一般要把分配该权重方向的长度设置为零,比如在水平方向分配权重,就把width设置为零。
- RelativeLayout(相对布局)
相对布局可以让子组件相对于兄弟组件或父组件进行布局,可以设置子组件相对于兄弟组件或父组件进行上下左右对齐。
相对布局一定要加组件Id才能管理。
RelativeLayout中的子组件常用的属性:
- 相对于父组件,使用true和false作为参数
android:layout_alignParentTop 控件的顶部与父控件的顶部对齐;
android:layout_alignParentBottom 控件的底部与父控件的底部对齐;
android:layout_alignParentLeft 控件的左部与父控件的左部对齐;
android:layout_alignParentRight 控件的右部与父控件的右部对齐;
- 相对给定id的控件,使用“@id/**”作为参数
android:layout_above 控件底部置于给定ID控件之上;
android:layout_below 控件底部置于给定ID控件之下;
android:layout_toLeftOf 控件右边缘与给定ID控件左边缘对齐;
android:layout_toRightOf 控件左边缘与给定ID控件右边缘对齐;
android:layout_alignBaseline 控件baseline与给定IDbaseline对齐;
android:layout_alignTop 控件顶部边缘与给定ID顶部边缘对齐;
android:layout_alignBottom 控件底部边缘与给定ID底部边缘对齐;
android:layout_alignLeft 控件左边缘与给定ID左边缘对齐;
android:layout_alignRight 控件右边缘与给定ID右边缘对齐;
- 居中,使用true和false作为参数
android:layout_centerHorizontal 水平居中;
android:layout_centerVertical 垂直居中;
android:layout_centerInParent 父控件的中央;
- TableLayout(表格布局)
以表格形式显示子组件的布局方式
- GridLayout(网格布局)
Android4.0之后新加入的布局,和表格布局类似,但是有新加入的一些功能
- AbsoluteLayout(绝对布局)
绝对布局中将所有的子组件通过设置android:layout_x 和 android:layout_y属性,将子组件的坐标位置固定下来,即坐标(android:layout_x, android:layout_y) ,layout_x用来表示横坐标,layout_y用来表示纵坐标。屏幕左上角为坐标(0,0),横向往右为正方向,纵向往下为正方向。实际应用中,这种布局用的比较少,因为Android系统设备屏幕比较多样化,各自的屏幕大小、分辨率等都不一样,使用绝对布局,可能导致在有的设备上出现显示不全、位置不理想等问题出现。
- 常用的通用布局属性
- layout_margin
用于设置控件边缘相对于父控件的边距
android:layout_marginLeft
android:layout_marginRight
android:layout_marginTop
android:layout_marginBottom
- padding
用于设置控件内容相对于控件边缘的边距
android: paddingLeft
android: paddingRight
android: paddingTop
android: paddingBottom
- gravity
用于设置View组件里面内容的对齐方式
Top 对齐到顶端
Bottom 对齐到底端
Left 对齐到左侧
Right 对齐到右侧
Center 居中对齐
- layout_gravity
用于设置容器组件(可以具有子组件的组件)的对齐方式
android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐
android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐
android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐
android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐