Layout布局相关笔记
来源:互联网 发布:黑金ps知乎 编辑:程序博客网 时间:2024/06/10 18:08
如何使用布局资源文件
在代码中创建每个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 本元素的右边缘和某元素的的右边缘对齐
0 0
- Layout布局相关笔记
- ExtJs笔记 layout 布局
- ExtJs4 笔记 layout 布局
- QML Layout的布局笔记
- iOS (布局机制)layout机制相关方法
- Android开发-layout布局相关属性总结
- Android开发-layout布局相关属性总结
- ExtJs4 笔记(14) layout 布局
- ExtJs4 笔记(14) layout 布局
- ExtJs4 笔记(14) layout 布局
- ExtJs4 笔记(14) layout 布局
- Android学习笔记05:布局Layout介绍
- ExtJs4 笔记(14) layout 布局
- ExtJs4 笔记(14) layout 布局
- ExtJs4 笔记(14) layout 布局
- ExtJs4 笔记(14) layout 布局
- ExtJs4 笔记(14) layout 布局
- layout布局
- Windows下虚拟机搭建Hadoop集群
- 架构师之路漫画连载----每月第一周发布
- **LeetCode 76. Minimum Window Substring
- 原生态JAVAEE酒店管理系统系列一 之编码之前的环境准备
- C#_启动多个窗体winform
- Layout布局相关笔记
- vba 操作文件夹和txt文件
- JAVA判断对象是不是属于哪一个类 instanceof , isInstance ,isAssignableFrom
- android 优化策略
- Android控件架构
- spring简单概念
- 图片压缩
- 偷懒新姿势,打造属于RecyclerView的万能适配器Adapter和ViewHolder
- MyEclipse 启动不了