Android 五大布局

android 发表时间:2016-10-25 作者:hh 浏览次数:1536

android中的布局总共有五个:LinearLayout (线性布局),RelativeLayout (相对布局),FrameLayout (帧布局),TableLayout (表格布局),AbsoluteLayou (绝对布局)

布局和布局之间可以互相嵌套,布局里面可以放置控件(例如:TextView,EditText,Button...),但是控件里面不能放置布局!

例如:布局和布局:

                                   

 <LinearLayout>
       <FrameLayout>
       </FrameLayout>
 </LinearLayout>



        布局和控件:

   <LinearLayout>
         <TextView>
         </TextView>
   </LinearLayout>


LinearLayout

   线性布局是按照水平或垂直的顺序将其中的子元素依次按照顺序排列,每一个元素都位于前面一个元素之后。线性布局分为两种:水平方向和垂直方向的布局。分别通过属性android:orientation="vertical" 和 android:orientation="horizontal"来设置,默认情况不设置orientation的时候是水平方向的.

blob.png

这个是设置的垂直的,其中的layout_width="match_parent"和layout_height="match_parent"是相对于父控件充满父控件的,gravity是设置其中的元素在这个LinearLayout中是居中的.LinearLayout中还有一个属性是:android:layout_weight,这个属性是比重.


blob.png

<LinearLayout
    android:layout_width="match_parent"  
    android:layout_height="match_parent"
    android:orientation="horizontal" >
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:orientation="horizontal" >
        </LinearLayout >
 
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="2"
            android:orientation="horizontal" >
        </LinearLayout >
 
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="3"
            android:orientation="horizontal" >
        </LinearLayout >
</LinearLayout >


 

RelativeLayout :

  RelativeLayout是按照子元素之间的位置关系完成布局的,作为Android系统五大布局中最灵活也是最常用的一种布局方式,非常适合于一些比较复杂的界面设计。注意:在引用其他的子元素的时候,那个子元素的id必须已经存在,否则会出现错误.(RelativeLayout的属性用起来比较活用,就不举例子了)

   其常用的位置属性有:

        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该组件是否垂直居中


FrameLayout :

            将所有的子元素放在整个界面的左上角,后面的子元素直接覆盖前面的子元素。

blob.png

    这个总体布局就是用的FrameLayout,下面的tab为切换按钮,就是类似现在大部分应用上的主页面,他要在一个activity显示不同的东西,通过FrameLayout和fragment的结合来显示不同的内容.

TableLayout :

                表格布局,适用于多行多列的布局格式(类似手机中的计算器那种类型的就可以用表格布局),每个TableLayout是由多个TableRow组成,一个TableRow就表示TableLayout中的每一行,这一行可以由多个子元素组成。实际上TableLayout和TableRow都是   LineLayout线性布局的子类。但是TableRow的参数android:orientation属性值固定为horizontal,且android:layout_width="match_partent",android:layout_height="wrap_content"。所以TableRow实际是一个横向的线性布局,且所以子元素宽度和高   度一致。

   属性:

    Shrinkable  表示该列的宽度可以进行收缩,以使表格能够适应父容器的大小

     Stretchable 表示该列的宽度可以进行拉伸,以使能够填满表格中的空闲空间

     Collapsed  表示该列会被隐藏

AbsoluteLayou :

    绝对布局中将所有的子元素通过设置android:layout_x 和 android:layout_y属性,将子元素的坐标位置固定下来,layout_x用来表示横坐标,layout_y用来表示纵坐标。屏幕左上角为坐标(0,0),横向往右为正方,纵向往下为正方。但是在实际布局   中,这种布局基本不用,因为android的机子类型太多了,屏幕的大小还有分辨率等可能都不一样,如果用绝对布局,就会导致如果在大屏手机上显示在右下角的东西,而在小手机上面就看不到,所以基本不用这个布局。