Android布局主要有五种
1.Linearlayout 线性布局
2.RelativeLayout 相对布局
3.FrameLayout 帧布局
4.TableLayout 表格布局(过时)
5.AbsoluteLayout 绝对布局(过时)
2.RelativeLayout 相对布局
3.FrameLayout 帧布局
4.TableLayout 表格布局(过时)
5.AbsoluteLayout 绝对布局(过时)
[注]:4.0版本以后 新增了一个布局:GridLayout
这里主要讲解Linearlayout RelativeLayout FrameLayout GridLayout
LinearLayout线性布局
概念:单一方向的布局 按水平方向或者垂直方向所有子元素 在水平方向或者垂直方向 每一行或者每一列只能有一个元素
属性:
1.LinearLayout的方向属性 orientationandroid:orientation:方向属性 有俩个方向 horizontal(水平),vertical(垂直)
android:orientation="horizontal"
android:orientation="vertical"
LinearLayout 默认是有方向的 水平方向
2.LinearLayout的权重属性android:layout_weight="1" 权重属性 分配父控件的剩余空间
剩余空间:父控件的宽或者高 减去 子控件 (所有子元素)的宽或者高 (*和方向有关)
分配:子控件的宽或者高 = 原有的宽度或者高度 + 剩余空间(宽或者高)/子控件权重的和 *子控件的权重
note :使用android:layout_weight时设置子控件的宽或者高为0dp(成比例进行分配)
分配:子控件的宽或者高 = 原有的宽度或者高度 + 剩余空间(宽或者高)/子控件权重的和 *子控件的权重
note :使用android:layout_weight时设置子控件的宽或者高为0dp(成比例进行分配)
3. android:layout_gravity="bottom" 相对于父控件的位置
android:layout_gravity属性和父控件的方向有关
如果父控件是水平方向android:layout_gravity的自身的水平方向属性是无效的
如果父控件是垂直方向 android:layout_gravity的自身的垂直方向属性是无效的
如果父控件是水平方向android:layout_gravity的自身的水平方向属性是无效的
如果父控件是垂直方向 android:layout_gravity的自身的垂直方向属性是无效的
4.android:gravity="bottom|right"
如果当前属性是在布局节点:子元素相对于自身的位置
如果当前属性在控件中 (button ,TextView..)控制的是控件里的内容 (文字)
如果当前属性在控件中 (button ,TextView..)控制的是控件里的内容 (文字)
RelativeLayout相对布局
概念:根据控件的相对位置 进行布局
属性: 16个
1.居中位置
android:layout_centerInParent="true"相对于父控件的中央位置android:layout_centerHorizontal="true"相对于父控件的水平居中
android:layout_centerVertical="true"相对于父控件的垂直居中
水平居中和垂直居中 可以重复使用
2,对齐位置
android:layout_alignParentTop="true" 相对于父控件的 上对齐android:layout_alignParentBottom="true" 相对于父控件的 底边对齐
android:layout_alignParentRight="true" 相对于父控件的 右对齐
android:layout_alignParentLeft="true" 相对于父控件的 左对齐
相对兄弟控件的位置
相对兄弟元素的位置
android:layout_above="@+id/tv1" 在指定兄弟控件的上边(顶部)
android:layout_below="@+id/tv1" 在指定兄弟控件的下边(底边)
android:layout_toLeftOf="@+id/tv1"在指定兄弟控件的左边
android:layout_toRightOf="@+id/tv1"在指定兄弟控件的右边
相对于兄弟控件的对齐方式 :
android:layout_alignTop="@id/tv_money" 相对指定兄弟控件的顶部对齐
android:layout_alignBottom="@id/tv_money"相对指定兄弟控件的底部对齐
android:layout_alignLeft="@id/tv_money" 相对指定兄弟控件的左侧对齐
android:layout_alignRight="@id/tv_money" 相对指定兄弟控件的右侧对齐
android:layout_alignBaseline="@id/tv_money"相对指定兄弟控件的基准线对齐
Framelayout:帧布局(不常用)
概念:每个组件都是一帧 当前子组件会覆盖前一个组件
属性:
android:layout_gravity="center" 控制 当前组件的位置
android:foreground="@drawable/ic_launcher"放置在布局管理器所有组件之上
android:foregroundGravity="top|right" 控制放置的位置 属性可以用"|" 叠加使用 属性不能互斥
GridLayout:网格布局(不常用)
android:orientation="vertical" 排列方式
android:rowCount="3" 行的数量
android:rowCount="3" 行的数量
android:columnCount="3"列的数量
位置是从0开始
android:layout_row="0" 控件在第几行展示
android:layout_column="0" 控件在第几列展示
android:layout_row="0" 控件在第几行展示
android:layout_column="0" 控件在第几列展示
【备注:】
颜色有RGB颜色格式和ARGB格式。RGB是红绿蓝三原色。而ARGB是带alpha的三原色,即有透明度的三原色。
#FFFFFF 代表白色
#000000 黑色
#FFFFFFFF 完全不透明
#00FFFFFF 完全透明
#88FFFFFF 半透明
sp、dp、dip、pt、px等单位的区别?
- dpi dpi指像素密度。dots per inch ,即每英寸内像素点的个数。它不是表示长度的单位。在android中认为:低(120dpi),中(160dpi),高(240dpi),超高(320dpi)。随着技术的增长,实际dpi已经超出这个定义范围。
- dip device independent pixels ,即与设备无关的像素。目前这个单位已经被dp所取代,而不建议使用dip。
- dp 与dip的概念一样。不过dp已经取代了dip。在Android中用来表示非文字大小的尺寸。例如:外边距、内填充等。
- sp scale independent pixel ,即与缩放比例无关的像素。在android中常用来表示文字大小。
- px 表示像素。因为同样是200px,但是在不同手机下显示的大小是不同的。
- pt point磅。1磅=1/74英寸
- 总之:dp是用来定义非文字的尺寸,sp用来定义文字大小。px只用于产生一条一像素的分割线时使用。