Android布局组件

Android布局组件
一、布局介绍:
布局用于定义Activity中UI元素的排列结构,Android提供了LinearLayout 线性布局、RelativeLayout 相对布局、FrameLayout 帧布局、TableLayout 表格布局、AbsoluteLayout 坐标布局 共五种布局,可以通过两种方式声明布局:
1、在XML中声明UI元素。Android提供了对应于View类及其子类的XML元素。
2、运行时实例化布局元素。可以通过编程创建View对象和ViewGroup对象(并操作其属性)。
    在XML中声明UI的优点:
可以更好的将应用的外观与控制应用行为的代码隔离。UI描述位于应用代码外部,这意味着在修改或者调整描述时无需修改您的源代码并重新编译。例如,可以创建使用与不同屏幕方向、不同设备屏幕尺寸和不同语言的XML布局。此外,在XML中声明布局还能更轻松的显示UI的结构,从而简化问题调试过程。因此,Android应用中普遍采用在XML中布局UI元素
二、布局的实现
1、编写布局文件
    布局文件都必须只包含一个根元素,并且该元素必须是视图对象或ViewGroup对象。定义根元素之后,即可再以子元素的形式添加其他布局对象或UI元素,从而逐步构建定义布局的视图层次结构。
【注】在 XML 中声明布局后,请在您的 Android 项目 res/layout/ 目录中以 .xml 扩展名保存文件,以便其能够正确编译。
2、加载布局文件
    当编译应用时,每个 XML 布局文件都会编译到一个 View 资源中。应该在Activity.onCreate() 回调方法中使用应用代码加载布局资源。通过调用setContentView(),以 R.layout.layout_file_name 形式向其传递对布局资源的引用来执行此操作。
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main_layout);
        }
<1>线性布局 LinearLayout
    所有的子元素都按照垂直或水平的顺序在界面上排列:
    如果垂直排列,则每行仅包含一个界面元素。
    如果水平排列,则每列仅包含一个界面元素。
XML属性
备注
android:orientation
horizontal
vertical
决定横向排列,还是纵向排列
android:layout_weight
int
将父布局中剩余的尺寸按各兄弟元素的weight值比例进行分配,与“wrap_content”配合使用
android:layout_margin
dp
设置对象边缘与父布局的边缘之间的空白
android:padding
dp
设置自身内部元素距离自身边缘的距离
android:background
color/drawable
设置整个布局画面的背景
android:gravity
Top,bottom,left,
right,centet
元素在自身所属区域内的对齐方式
android:layout_gravity
Top,bottom,left,
right,centet
元素在布局中的对齐方式
 
<2>相对布局 RelativeLayout
    一种非常灵活的布局方式,通过指定界面元素与其他元素的相对位置关系,确定界面中所有元素的布局位置。特点:能够最大程度保证在各种屏幕类型的手机上正确显示界面布局表。
相对布局属性分三类:
第一类:属性值为true 或false
XML属性
备注
android:layout_centerHrizontal
水平居中
android:layout_centerVertical
垂直居中
android:layout_centerInparent
相对于父元素完全居中
android:layout_alignParentBottom
贴紧父元素的下边缘
android:layout_alignParentLeft
贴紧父元素的左边缘
android:layout_alignParentRight
贴紧父元素的右边缘
android:layout_alignParentTop
贴紧父元素的上边缘
第二类:属性值必须为id 的引用名“@id/id-name”
XML属性
备注
android:layout_below
在某元素下方
android:layout_above
在某元素上方
android:layout_toLeftOf
在某元素的左边
android:layout_toRightOf
在某元素的右边
android:layout_alignTop
本元素的上边缘和某元素的的上边缘对齐
android:layout_alignLeft
本元素的左边缘和某元素的的左边缘对齐
android:layout_alignBottom
本元素的下边缘和某元素的的下边缘对齐
第三类:属性值为具体的像素值,主要是调整ui 元素之间的间距
XML属性
备注
android:layout_marginBottom
离某元素底边缘的距离
android:layout_marginLeft
离某元素左边缘的距离
android:layout_marginRight
离某元素右边缘的距离
android:layout_marginTop
离某元素上边缘的距离
<3>帧布局 FrameLayout
    最简单的布局形式 ,组件都放在屏幕的左上角,组件是按次序加入次序层叠在一起,上一层的控件会覆盖下一层的控件。
XML属性
备注
android:layout_margin
dp
设置对象边缘与父布局的边缘
之间的空白
android:padding
dp
设置自身内部元素距离自身边
缘的距离
android:background
color/drawable
设置整个布局画面的背景
android:gravity
Top,bottom,left ,right,center
元素在自身所属区域内的对齐
方式
android:layout_gravity
Top,bottom,left ,right,center
元素在布局中的对齐方式
<4>表格布局 TableLayout
    Tablelayout 以行和列的形式对控件进行管理,每一行为一个TableRow 对象,或一个View 控件。当为TableRow 对象时,可在TableRow 下添加子控件,默认情况下,每个子控件占据一列。有多少个子控件就有多少列;当为View 时,该View 将独占一行
XML属性
备注
android:layout_colum
指定该单元格在第几列显示
android:layout_span
指定该单元格占据的列数(未指定时,为1)
android:stretchColumns
设置可伸展的列。该列可向行方向伸展,最多可占
据一整行
android:shrinkColumns
设置可收缩的列。当该列子控件的内容太多,已经
挤满所在行,那么该子控件的内容将往列方向显示
<5>坐标布局 AbsoluteLayout(绝对布局)
    AbsoluteLayout 是根据元素指定的x/y 坐标值在屏幕上进行显示的布局。容器的坐标系是以左上角为(0, 0)点,当垂直向下为y 轴和水平向右为x 轴。AbsoluteLayout 没有页边框,允许元素之间互相重叠。
    因为需要为元素固定坐标点,使界面代码太过刚性,以导致在不同的设备上兼容性差,开发中我们通常不推荐使用 AbsoluteLayout ,我们只需简单的了解一下即可。
        <?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
<ImageView
        android:layout_x="280px"
        android:layout_y="200px"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/ic_launcher"
        />
</AbsoluteLayout>
 
 
 
posted @ 2016-07-21 10:39  逛小逛  阅读(282)  评论(0编辑  收藏  举报