临近考试,做一下简单的总结,巩固一下;
不能面面俱到,举的都是一些常用的基础例子;
一、Layout布局篇
通用属性还请自行体会,这里只说了部分特有或常用属性;
1) LinearLayout(线性布局)
一种非常常用的布局,会将它所包含的控件在线性方向上以此排列。
布局属性
orientation
android:orientation="vertical"
orientation
用来指定布局排列方向,其中
水平排列:horizontal
垂直排列:vertical
如果不指定orientation
属性,默认为水平排列;
控件属性
layout_gravity
android:layout_gravity="end"
layout_gravity
是用于指定线性布局中的控件对齐方式,其中
-
居中:
center
-
水平居中:
center_horizontal
-
垂直居中:
center_vertical
-
靠左:
start|right
(当父级排列方向为垂直排列有效) -
靠右:
end|left
(当父级排列方向为垂直排列有效) -
靠上:
top
(当父级排列方向为水平排列有效) -
靠下:
bottom
(当父级排列方向为水平排列有效)
layout_weight
android:layout_weight="1"
layout_weight
是用于使用比例来控制控件大小
样例演示
<LinearLayout
android:layout_width="match_parent"
android:layout_height="200dp"
android:orientation="vertical"
android:background="#F6A9FB"
>
<TextView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:hint="@string/test_words"
android:background="#E805F5"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:hint="@string/test_words"
android:background="#8E1A95"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2"
android:hint="@string/test_words"
android:background="#573C59"
/>
</LinearLayout>
显示效果
这里是竖直排列,我们可以发现前两行的TextView
各占了竖直方向的1/4高,第三个TextView
占了1/2高;
对于代码的两个属性
android:layout_height="0dp"
android:layout_weight="1"
当我们想要使用比例来控制空间的高度时,那么就不能由layout_height
的值来决定,一般设为0dp;
然后设定相应的layout_weight
值,这里计算原理是
把LinearLayout
下的所有控件的layout_weight
值相加得到一个总值,然后每个控件所占的比列,即为自身的layout_weight
值除于总值;
2) RelativeLayout(相对布局)
一种非常常用的布局,可以通过相对定位的方式来指定控件在布局中的位置;
相对布局的布局方式更自由,属性字段更多,但都有规律可循,大部分都是见文知意;
控件属性
与parent相对
layout_alignParentXXX
指定控件相对父级布局的位置,值为true
orfalse
,其中XXX可以为:
-
Top:
layout_alignParentTop
,在父级的顶部 -
Bottom:
layout_alignParentBottom
,在父级的底部 -
Left:
layout_alignParentLeft
,在父级的左侧,为了兼容性,通常与layout_alignParentStart
一起使用; -
Start:
layout_alignParentStart
,在父级的左侧,为了兼容性,通常与layout_alignParentLeft
一起使用; -
Right:
layout_alignParentRight
,在父级的右侧,为了兼容性,通常与layout_alignParentEnd
一起使用; -
End:
layout_alignParentEnd
,在父级的右侧,为了兼容性,通常与layout_alignParentRight
一起使用;
样例:
指定控件在父级布局中的右上角
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
layout_centerXXX
指定控件在相对父级布局的位置,值为true
orfalse
,其中XXX可以为:
- Horizontal:
layout_centerHorizontal
,相对父级水平居中位置; - Vertical:
layout_centerVertical
,相对父级垂直居中位置; - InParent:
layout_centerInParent
,相对父级水平垂直居中位置;
控件之间相对
layout_toXXXOf
指定控件相对指定id
的控件的位置,值为相对控件M的id
,其中XXX可以为:
- Left:
layout_toLeftOf
,在M的左侧,为了兼容性,通常与layout_toStartOf
一起使用; - Start:
layout_toStartOf
,在M的左侧,为了兼容性,通常与layout_toLeftOf
一起使用; - Right:
layout_toRightOf
,在M的右侧,为了兼容性,通常与layout_toEndOf
一起使用; - End:
layout_toEndOf
,在M的右侧,为了兼容性,通常与layout_toRightOf
一起使用;
这里左侧、右侧仅仅是在竖直方向上考虑的,即两个控件不一定在同一水平线上的,请注意区分;
样例:
layout_below和layout_above
指定控件相对指定id
的控件的位置,值为相对控件M的id
- below:
layout_below
,在M的下方 - above:
layout_above
,在M的上方
这里的上方、下方仅仅是在水平方向上考虑的,即两个控件不一定在同一垂直线上的,请注意区分;
样例:
layout_alignXXX
指定控件相对指定id
的控件的位置,值为相对控件M的id
,其中XXX可以为:
-
Top:
layout_alignTop
,表示指定控件的上边缘和M的上边缘对齐 -
Bottom:
layout_alignBottom
,表示指定控件的下边缘和M的下边缘对齐 -
Left:
layout_alignLeft
,表示指定控件的左边缘和M的左边缘对齐,为了兼容性,通常与layout_alignStart
一起使用; -
Start:
layout_alignStart
,表示指定控件的左边缘和M的左边缘对齐,为了兼容性,通常与layout_alignLeft
一起使用; -
Right:
layout_alignRight
,表示指定控件的右边缘和M的右边缘对齐,为了兼容性,通常与layout_alignEnd
一起使用; -
End:
layout_alignEnd
,表示指定控件的右边缘和M的右边缘对齐,为了兼容性,通常与layout_alignRight
一起使用; -
Baseline:
layout_alignBaseline
,表示指定控件的基线和M的基线对齐
这里边缘对齐,指的是在同一水平线上或同一垂线上;
样例:
3) FrameLayout(帧布局)
为每个控件创建一个空白区域(称为一帧,每个控件占据一帧)。
帧布局没有复杂的定位方式,所有控件默认左上角,并按照先后放入的顺序重叠摆放,先放入的控件在最底层,后放入的显示在最顶层;
布局属性
android:foreground="@"
android:foregroundGravity="left"
foreground
设置帧布局容器的前景图像,始终位于所有子控件之上;
foregroundGravity
设置前景图像的显示位置
控件属性
参见LinearLayout
的layout_gravity
4) TableLayout(表格布局)
表格布局继承于LinearLayout
,以表格方式排列空间,通过行和列将界面划分为多个单元格;
每一行都由TableRow
对象组成,TableRow
的数量决定表格的行数;
TableRow
里最多控件个数决定表格的列数;
除了继承了LinearLayout
的属性和方法之外,还有一些特有属性:
布局属性
android:stretchColumns="2"
android:shrinkColumns="2"
android:collapseColumns="2"
stretchColumns
设置该列被拉伸,列号从0
开始,传多个值用,
隔开;
shrinkColumns
设置该列被收缩,列号从0
开始,传多个值用,
隔开;
collapseColumns
设置该列被隐藏,列号从0
开始,传多个值用,
隔开;
控件属性
android:layout_column="1"
android:layout_span="1"
layout_column
设置该单元格显示位置,从0
开始;
layout_span
设置该单元格占据几列,默认一列;
后记
只是简单的介绍了几个基础布局,还有一些新增的比如百分百布局
这里暂时就不做介绍了;
布局的学习还是需要多动手,多思考,才能让我们的界面更加人性化,分辨率兼容性更强;
有问题欢迎评论或者联系我,看到了会及时回复的;
邮箱:[email protected]