《Android -- 布局》
1. 什么是布局
就是把界面中的控件按照某种规律摆放到指定的位置
2. 布局的二种实现
代码
xml配置文件:res/layout目录下
注:也可以同时使用xml和代码
3. 布局的基本属性
取值范围
{ //效果是一样的
fill_parent//过时
match_parent//不过时
}
固定值
{
dp 控件大小
sp 文字大小
}
padding 内补丁
margin 外补丁
android:gravity和android:layout_gravity
用一个TextView、文字、背景查看效果最方便
android控件内部的元素
android:layout_gravity:控件所在父元素的位置
但父元素的水平和垂直设置的优先度更高
4. 常见布局
线性布局(重点) LinearLayout
表格布局(几乎不用)
帧布局
绝对布局
相对布局 RelativeLayout
网格布局
RTL(几乎不用)
5. 案例1:padding内补丁、margin外补丁的区别,以及与内容
match_parent/fill_parent
padding/margin
background
wrap_content
6. 案例2:线性布局(重点)
orientation=“vertical|horizontal”
android控件内部的元素(对内有效)
7. 案例3gravity和android:layout_gravity的区别
7.1 android控件内部的元素(对内有效)
android:layout_gravity:控件所在父元素的位置(对外生效)
7.2 特殊情况
父元素的android:orientation=“vertical”,layout_gravity 水平设置的相关属性有效
父元素的android:orientation=“horizontal”,layout_gravity 垂直设置的相关属性有效
8. 案例4:LinearLayout布局中Layout_weight属性的作用
8.1 首先声明只有在Linearlayout中,layout_weight属性才有效。
8.2 它是用来指定(剩余空闲空间)的分割比例,而非按比例分配整个空间。
8.3 另外android:layout_weight会引起争议,是因为在设置该属性的同时,
设置android:layout_width为wrap_content和match_parent会造成两种截然相反的效果。
8.4 如果想用layout_weight平均分配空间,正确方式是将layout_width(或layout_height)设置为0dp,
再通过layout_weight按比例分配空间
注:关键点在于搞清楚什么是剩余空闲空间
layout_weight
误区:layout_weight理解成将activity整个手机屏幕按相反比例划分
正确:layout_weight划分的不是整个手机屏幕,而是划分屏幕剩余控件
解析:
整个屏幕:1080
A:layout_weight=2 ; 1080 + (-2160)*2/5= 216 ; 0(1080-1080)
B:layout_weight=2 ; 1080 + (-2160)*2/5= 216 ; -1080(0-1080)
C:layout_weight=1 ; 1080 + (-2160)*1/5= 648 ; -2160(-1080-1080)
实际占用 :
A:216
B:216
C:648
屏幕剩余控件:
A:0(1080-1080)
B:-1080(0-1080)
C:-2160(-1080-1080)
9. 案例5:帧布局(就好象一张张卡片堆叠上去,后面会盖出前面的)
FrameLayout
注:帧布局有点类似于awt的CardLayout都是把组件一个一个叠加到一起,
但CardLayout能将下面的组件移上来,但FrameLayout没有提供此功能
ImageView
src
scaleType="fitXY" XY方向拉伸
android:scaleType="fitXY"
android:src="@drawable/img18"
10,重要单词
margin 外补丁
padding 内补丁
strectch 伸展
shrink 收缩
weight 重量
还没有评论,来说两句吧...