您的位置:首页 > 其它

Layout布局相关笔记

2016-02-15 21:56 267 查看


如何使用布局资源文件

在代码中创建每个Activity时,在onCreate()方法中,调用setContentView()加载指定的Layout布局文件即可。

然后就可以通过findViewById()或者注解的方式来获得在布局文件中创建的相应id的控件。

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

button1 = (Button) findViewById(R.id.button1);
}



布局方式

有过其他GUI编程经验的就很容易理解了。




LinearLayout线性布局

线性布局是按照水平或垂直的顺序将子元素 (可以是控件或布局) 依次按照顺序排列,每一个元素都位于前面一个元素之后。线性布局分为两种:水平方向和垂直方向的布局。分别通过属性 android:orientation="vertical" 和 android:orientation="horizontal" 来设置。
通过android:layout_weight设置子元素占据的空间大小的比例。


TableLayout 表格布局

表格布局适用于多行多列的布局格式,每个TableLayout由多个TableRow组成,
一个 ableRow就表示TableLayout中的每一行,这一行可以由多个子元素组成。实际上 TableLayout和TableRow都是LineLayout线性布局的子类。但是TableRow的参数 android:orientation属性值固定为horizontal,且android:layout_width=MATCH_PARENT,android:layout_height=WRAP_CONTENT。所以 TableRow 实际是一个横向的线性布局,且所以子元素宽度和高度一致。
注意:在 TableLayout 中,单元格可以为空,但是不能跨列,意思是只能不能有相邻的单元格为空。

在TableLayout布局中,一列的宽度由该列中最宽的那个单元格指定,而该表格的宽度由父容器指定。可以为每一列设置以下属性:

Shrinkable 表示该列的宽度可以进行收缩,以使表格能够适应父容器的大小

Stretchable 表示该列的宽度可以进行拉伸,以使能够填满表格中的空闲空间

Collapsed 表示该列会被隐藏

TableLayout 中的特有属性:

android:collapseColumns
android:shrinkColumns

android:stretchColumns = "0,1,2,3"// 表示产生 4 个可拉伸的列


RelativeLayout 相对布局

最常用的布局。

RelativeLayout继承于android.widget.ViewGroup,其按照子元素之间的位置关系完成布局的,作为 Android 系统五大布局中最灵活也是最常用的一种布局方式,非常适合于一些比较复杂的界面设计。
注意:在引用其他子元素之前,引用的 ID 必须已经存在,否则将出现异常。
常用的位置属性:
android:layout_toLeftOf 该组件位于引用组件的左方
android:layout_toRightOf 该组件位于引用组件的右方
android:layout_above 该组件位于引用组件的上方
android:layout_below 该组件位于引用组件的下方
android:layout_alignParentLeft 该组件是否对齐父组件的左端
android:layout_alignParentRight 该组件是否齐其父组件的右端
android:layout_alignParentTop 该组件是否对齐父组件的顶部
android:layout_alignParentBottom 该组件是否对齐父组件的底部
android:layout_centerInParent 该组件是否相对于父组件居中
android:layout_centerHorizontal 该组件是否横向居中
android:layout_centerVertical 该组件是否垂直居中


FrameLayout 框架布局

将所有的子元素放在整个界面的左上角,后面的子元素直接覆盖前面的子元素,使用较少,启动页面、视频暂停图标,操作指导等。


AbsoluteLayou 绝对布局(应该算是淘汰了)

将所有的子元素通过设置 android:layout_x 和 android:layout_y 属性,将坐标位置固定下来,即坐标 (android:layout_x, android:layout_y) ,layout_x 用来表示横坐标,layout_y 用来表示纵坐标。屏幕左上角为坐标 (0,0),横向往右为正方,纵向往下为正方。实际应用中使用较少,因为Android终端机型比较多各种屏幕大小,分辨率也不一样,如果用绝对布局,可能导致在有的终端上显示不等。


GridLayout 网格布局(Android4.0以后推出)

GridLayout 布局使用虚细线将布局划分为行、列和单元格,也支持一个控件在行、列上都有交错排列。与LinearLayout布局一样,也分为水平和垂直两种方式,默认是水平布局,一个控件挨着一个控件从左到右依次排列,但是通过指定 android:columnCount 设置列数的属性后,控件会自动换行进行排列。另一方面,对于 GridLayout 布局中的子控件,默认按照wrap_content 的方式设置其显示,这只需要在
GridLayout 布局中显式声明即可。若要指定某控件显示在固定的行或列,只需设置该子控件的 android:layout_row 和 android:layout_column 属性即可,但是需要注意:android:layout_row=”0”表示从第一行开始,android:layout_column=”0”表示从第一列开始,这与编程语言中一维数组的赋值情况类似。
如果需要设置某控件跨越多行或多列,只需将该子控件的 android:layout_rowSpan 或者 layout_columnSpan 属性设置为数值,再设置其layout_gravity属性为fill即可,前一个设置表明该控件跨越的行数或列数,后一个设置表明该控件填满所跨越的整行或整列。

注:

不同和相同Layout布局之间可以互相嵌套。


常用布局的属性:

(1)layout_margin

用于设置控件边缘相对于父控件的边距

android:layout_marginLeft

android:layout_marginRight

android:layout_marginTop

android:layout_marginBottom

(2) layout_padding

用于设置控件内容相对于控件边缘的边距

android:layout_paddingLeft

android:layout_paddingRight

android:layout_paddingTop

android:layout_paddingBottom

(3) layout_width/height

用于设置控件的高度和宽度

wrap_content 内容包裹,表示这个控件的里面文字大小填充

fill_parent 跟随父窗口

match_parent

(4) gravity

用于设置 View 组件里面内容的对齐方式

top bottom left right center 等

(5) android:layout_gravity

用于设置 Container 组件的对齐方式

android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐

android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐

android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐

android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: