Android系统共提供了5种布局方式:

    1,LinearLayout 线性布局

    2,TableLayout 表格布局

    3,RelativeLayout 相对布局

    4,AbsouteLayout 绝对布局

    5,FrameLayout 框架布局


一、框架布局FrameLayout

所有添加到这个布局中的视图都以层叠的方式显示。第一个添加的组件放到最底层,最后添加到框架中的视图显示在最上面。上一层的会覆盖下一层的控件。原理类似于堆栈。

 

示例:

framelayout.xml:
<?xml version="1.0" encoding="UTF-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!-- 由外到内颜色由深到浅 -->
<TextView android:layout_width="320dp"
android:layout_height="320dp"
android:layout_gravity="center"
android:background="#000011"/>
<TextView android:layout_width="300dp"
android:layout_height="300dp"
android:layout_gravity="center"
android:background="#004433"/>
<TextView android:layout_width="280dp"
android:layout_height="280dp"
android:layout_gravity="center"
android:background="#00aa00"/>
<TextView android:layout_width="260dp"
android:layout_height="260dp"
android:layout_gravity="center"
android:background="#00dd00"/>
<TextView android:layout_width="240dp"
android:layout_height="240dp"
android:layout_gravity="center"
android:background="#00ff00"/>
</FrameLayout>

效果如下:

android 布局内控件全部disable android布局框架_layout

 

修改最后一个的宽高为320dp时的效果图:

android 布局内控件全部disable android布局框架_layout_02

 

 

二、线性布局LinearLayout


分为水平(h)线性布局和垂直(v)线性布局两种。

LineLayout布局有一个重要的属性gravity,该属性用于控制布局中控件的对齐方式。如果没有子控件,则表示其内容的对齐方式,比如果一个TextView里的文字对齐方式。如果有子控件则表示子控件的对齐方式。设置多个属性值需要使用”|”组合。

Android:layoug_gravity定义了这个元素相对于父元素的布局,其常量值和android:gravity一样。

另外一个重要的属性是android:layout_weight.

layout_weight 用于给一个线性布局中的诸多视图的重要度赋值.所有的视图都有一个layout_weight值,默认为零,意思是需要显示多大的视图就占据多大的屏幕空 间。若赋一个高于零的值,则将父视图中的可用空间分割,分割大小具体取决于每一个视图的layout_weight 值以及该值在当前屏幕布局的整体 layout_weight值和在其它视图屏幕布 
局的layout_weight值中所占的比率而定.

    举个例子:比如说我们在水平方向上有一个文本标签和两个文本编辑元素.该文本标签并无指定layout_weight值,所以它将占据需要提供的最少空间。如果两个文本编辑元素每一个的layout_weight值都设置为1,则两者平分在父视图布局剩余的宽度(因为我们声明这两者的重要度相等)。如果两个  文本编辑元素其中第一个的layout_weight值设置为1,而第二个的设置为2,则剩余空间的三分之二分给第一个,三分之一分给第二个(数值越小,重要度越高)。

示例:

简单的LinearLayout:

Linearlayout.xml->
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<EditText
android:layout_width="150px"
android:layout_height="wrap_content"/>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="left">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="确定"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="取消"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/change"
android:text="复杂线性布局"/>
</LinearLayout>
</LinearLayout>

效果图:

 

android 布局内控件全部disable android布局框架_android_03

 

复杂的LinearLayout:

Linearlayout2.xml->
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout android:orientation="horizontal"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:layout_weight="1"> <!-- 每一个都占据1/3的空间 -->
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:layout_weight="1">
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="左上button"
android:layout_gravity="left" />
</LinearLayout>
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:layout_weight="2">
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="右上button"
android:layout_gravity="right" />
</LinearLayout>
</LinearLayout>
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:layout_weight="1" android:gravity="center">
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="中心button" />
</LinearLayout>
<LinearLayout android:orientation="horizontal"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:layout_weight="1">
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:layout_weight="1" android:gravity="left|bottom">
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="左下button" />
</LinearLayout>
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:layout_weight="1" android:gravity="right|bottom">
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="右下button" />
</LinearLayout>
</LinearLayout>
</LinearLayout>

android 布局内控件全部disable android布局框架_安卓布局_04