LinerLayout線性佈局:
這種佈局方式是指在這個裡面的控件元素顯線性,我們可以通過setOrientation(int orientation)來指定線性佈局的顯示方式,其值有:HORIZONTAL(0)、VERTICAL(1)。默認為HORIZONTAL。與之相關的我們也可以在佈局文件中通過android:orientation來指定。同理,其值也有:horizontal、vertical
LinearLayout是線性佈局控件,它包含的子控件將以橫向或豎向的方式排列,按照相對位置來排列所有的widgets或者其他的containers,超過邊界時,某些控件將缺失或消失,不能完全顯示。因此垂直方式排列時,每一行隻會有一個 widget或者是container,而不管他們有多寬,而水平方式排列是將會隻有一個行高(高度為最高子控件的高度加上邊框高度)。LinearLayout保持其所包含的 widget或者是container之間的間隔以及互相對齊(相對一個控件的右對齊、中間對齊或者左對齊)。
關於layout_weight:
LinearLayout還支持為其包含的widget或者是container指定填充權值。允許其包含的widget或者是container可以填充屏幕上的剩餘空間。剩餘的空間會按這些widgets或者是containers指定的權值比例分配屏幕。默認的 weight 值為0 ,表示按照widgets或者是containers實際大小來顯示,若高於0的值,則將 Container剩餘可用空間分割,分割大小具體取決於每一個widget或者是 container的layout_weight及該權值在所有widgets或者是containers中的比例。例如,如果有三個文本框,前兩個文本框的取值一個為2,一個為1,顯示第三個文本框後剩餘的空間的2/3給權值為2的,1/3大小給權值為1的。而第三個文本框不會放大,按實際大小來顯示。也就是權值越大,重要度越大,顯示時所占的剩餘空間越大。
示例1:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText android:id="@+id/txt01" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_weight="1"
android:text="1111" />
<EditText android:id="@+id/txt02" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_weight="2"
android:text="2222" />
<EditText android:id="@+id/txt03" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="3333" />
</LinearLayout>
幾個常用的XML屬性的詳解:
屬性名稱
相關方法
描述
android:baselineAligned
setBaselineAligned (boolean baselineAligned)
是否允許用戶調整它內容的基線。
android:baselineAlignedChildIndex
setBaselineAlignedChildIndex (int i)
是當前LinearLayout與其它View的對齊方式
android:gravity
setGravity (int gravity)
指定控件中內容的基本內容的對齊方式(本元素裡的所有元素的重力方向)。其值有:top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical、clip_horizontal
android:layout_gravity
是當前元素相對於父元素的重力方向
android:measureWithLargestChild
當被設置為真時,所有的子控件將被認為是具有重量最小面積最大的子控件
android:orientation
setOrientation (int orientation)
置它內容的對其方向,有兩個可以選擇的值: horizontal和vertical。分別表示水平排列和垂直排列。
android:weightSum
在Android裡我們可以通過兩種方式來設置佈局文件,一種是可以通過XML文件來設置佈局,這也是官方推薦,另外一種方式就是我們可以通過代碼來設置我們的佈局模式
方式一:通過XML文件。隻要在onCreate()方法裡通過setContentView()指定佈局文件即可
<?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">
<TextView
android:text="red"
android:gravity="center_horizontal"
android:background="#aa0000"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="1"/>
<TextView
android:text="green"
android:gravity="center_horizontal"
android:background="#00aa00"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="1"/>
<TextView
android:text="blue"
android:gravity="center_horizontal"
android:background="#0000aa"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="1"/>
<TextView
android:text="yellow"
android:gravity="center_horizontal"
android:background="#aaaa00"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="1"/>
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1">
<TextView
android:text="row one"
android:textSize="15pt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<TextView
android:text="row two"
android:textSize="15pt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<TextView
android:text="row three"
android:textSize="15pt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<TextView
android:text="row four"
android:textSize="15pt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
</LinearLayout>
</LinearLayout>
方式二:代碼方式
LinerLayout類的常用方法及常量
方法及常量
類型
描述
public static final int HORIZONTAL
常量
設置水平對齊
public static final int VERTICAL
常量
設置垂直對齊
public LinerLayout(Context context)
構造方法
創建LinerLayout類的對象
public void addView(View child, ViewGroup.LayoutParams params)
普通方法
增加組組件並且指定佈局參數
public void addView(View childView)
普通方法
增加組件
public void setOrientation(int orientaiton)
普通方法
設置對齊方式
LinerLayout.LayoutParams用於指定線性佈局的參數
類結構圖:
java.lang.Object
↳
android.view.ViewGroup.LayoutParams
↳
android.view.ViewGroup.MarginLayoutParams
↳
android.widget.LinearLayout.LayoutParams
常用佈局參數:
public static final int FILL_PARENT
public static final int WRAP_CONTENT
package com.jiahui.activity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.LinearLayout.LayoutParams;
/**
* 動態設置佈局
*
* @author Administrator
*
*/
public class Dyanmic_Layout_Activity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 定義線性佈局管理器
LinearLayout layout = new LinearLayout(this);
// 定義佈局管理器的指定寬和高
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.FILL_PARENT);
layout.setOrientation(LinearLayout.VERTICAL);
// 定義要顯示組件的佈局管理器
LinearLayout.LayoutParams txtParam = new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
TextView textView = new TextView(this);
// 顯示的文字
textView.setText("動態設置佈局增加的TextView組件");
// 設置文本的參數
textView.setLayoutParams(txtParam);
// 增加組件
layout.addView(textView, txtParam);
// 增加新的佈局管理器
super.setContentView(layout, params);
}
}
實現效果
源代碼下載:http://up.aiwalls.com/2011/1014/20111014013909286.rar
摘自:jiahui524專欄