android布局详解

来源:互联网 发布:西安财经行知学院官网 编辑:程序博客网 时间:2024/05/16 09:57

一、常用布局

Android系统中为我们提供的五大布局:LinearLayout(线性布局)、FrameLayout(单帧布局)、AbsoluteLayout(绝对布局)、TablelLayout(表格布局)、RelativeLayout(相对布局)。其中最常用的的是LinearLayout、TablelLayout和RelativeLayout。这些布局都可以嵌套使用。
(1)LinearLayout 线性布局
    线性布局是按照水平或垂直的顺序将子元素(可以是控件或布局)依次按照顺序排列,每一个元素都位于前面一个元素之后。线性布局分为两种:水平方向和垂直方向的布局。分别通过属性android:orientation="vertical" 和 android:orientation="horizontal"来设置。
(2)TableLayout 表格布局
    表格布局,适用于多行多列的布局格式,每个TableLayout是由多个TableRow组成,一个TableRow就表示TableLayout中的每一行,这一行可以由多个子元素组成。实际上TableLayout和TableRow都是LineLayout线性布局的子类。但是TableRow的参数android:orientation属性值固定为horizontal,且android:layout_width=MATCH_PARENT,android:layout_height=WRAP_CONTENT。所以TableRow实际是一个横向的线性布局,且所以子元素宽度和高度一致。
在TableLayout布局中,一列的宽度由该列中最宽的那个单元格指定,而该表格的宽度由父容器指定。可以为每一列设置以下属性:
     Shrinkable  表示该列的宽度可以进行收缩,以使表格能够适应父容器的大小
     Stretchable 表示该列的宽度可以进行拉伸,以使能够填满表格中的空闲空间
     Collapsed  表示该列会被隐藏
(3)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           该组件是否垂直居中
(4)FrameLayout 框架布局
     将所有的子元素放在整个界面的左上角,后面的子元素直接覆盖前面的子元素,所以用的比较少。
(5)AbsoluteLayou 绝对布局
     绝对布局中将所有的子元素通过设置android:layout_x 和 android:layout_y属性,将子元素的坐标位置固定下来,即坐标(android:layout_x, android:layout_y) ,layout_x用来表示横坐标,layout_y用来表示纵坐标。 屏幕左上角为坐标(0,0),横向往右为正方,纵向往下为正方。实际应用中,这种布局用的比较少,因为Android终端一般机型比较多,各自的屏幕大小。分辨率等可能都不一样,如果用绝对布局,可能导致在有的终端上显示不全等。

二、通用属性

 (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 本元素的右边缘和某元素的的右边缘对齐

三、常用属性

RelativeLayout用到的一些重要的属性:
 (1)属性值为true或false
    android:layout_centerHrizontal  水平居中
     android:layout_centerVertical   垂直居中
    android:layout_centerInparent    相对于父元素完全居中
    android:layout_alignParentBottom 贴紧父元素的下边缘
    android:layout_alignParentLeft   贴紧父元素的左边缘
    android:layout_alignParentRight  贴紧父元素的右边缘
    android:layout_alignParentTop    贴紧父元素的上边缘
    android:layout_alignWithParentIfMissing  如果对应的兄弟元素找不到的话就以父元素做参照物
 (2)属性值必须为id的引用名“@id/id-name”
    android:layout_below      在某元素的下方
    android:layout_above      在某元素的的上方
    android:layout_toLeftOf   在某元素的左边
    android:layout_toRightOf  在某元素的右边

    android:layout_alignTop   本元素的上边缘和某元素的的上边缘对齐
    android:layout_alignLeft  本元素的左边缘和某元素的的左边缘对齐
    android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐
    android:layout_alignRight  本元素的右边缘和某元素的的右边缘对齐
 (3)属性值为具体的像素值,如30dip,40px
    android:layout_marginBottom              离某元素底边缘的距离
    android:layout_marginLeft                   离某元素左边缘的距离
    android:layout_marginRight                 离某元素右边缘的距离
    android:layout_marginTop                   离某元素上边缘的距离
 (4)EditText的android:hint
设置EditText为空时输入框内的提示信息。
 (5)android:gravity 
android:gravity属性是对该view 内容的限定.比如一个button 上面的text.  你可以设置该text 在view的靠左,靠右等位置.以button为例,android:gravity="right"则button上面的文字靠右
 (6)android:layout_gravity
android:layout_gravity是用来设置该view相对与起父view 的位置.比如一个button 在linearlayout里,你想把该button放在靠左、靠右等位置就可以通过该属性设置.以button为例,android:layout_gravity="right"则button靠右
 (7)android:layout_alignParentRight
使当前控件的右端和父控件的右端对齐。这里属性值只能为true或false,默认false。
 (8)android:scaleType
android:scaleType是控制图片如何resized/moved来匹对ImageView的size。ImageView.ScaleType / android:scaleType值的意义区别:
CENTER /center  按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示
CENTER_CROP / centerCrop  按比例扩大图片的size居中显示,使得图片长(宽)等于或大于View的长(宽)
CENTER_INSIDE / centerInside  将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等于或小于View的长/宽
FIT_CENTER / fitCenter  把图片按比例扩大/缩小到View的宽度,居中显示
FIT_END / fitEnd   把图片按比例扩大/缩小到View的宽度,显示在View的下部分位置
FIT_START / fitStart  把图片按比例扩大/缩小到View的宽度,显示在View的上部分位置
FIT_XY / fitXY  把图片不按比例扩大/缩小到View的大小显示
MATRIX / matrix 用矩阵来绘制,动态缩小放大图片来显示。

** 要注意一点,Drawable文件夹里面的图片命名是不能大写的。

四、其他

LinearLayout中的属性baselineAligned的使用

1 0
原创粉丝点击