鍍金池/ 教程/ Android/ Android UI布局
Android 應(yīng)用組件
使用布局文件自定義Android組件
Android通知
Android主題示例
Android JetPlayer實(shí)例
Android MediaPlayer(多媒體播放)
Android AbsoluteLayout
Android FrameLayout
Android Gestures/手勢(shì)
Android AutoCompleteTextView(自動(dòng)完成)實(shí)例
Android 資源組織和訪問
Android ListView
Android GridView
Android數(shù)據(jù)備份
Android撥打電話
Android發(fā)送短信/SMS
Android ProgressDialog
SimpleCursorAdapter
Android發(fā)送電子郵件
Android Activity
Android TextView
Android事件處理
Android TableLayout
Android加載Spinner
Android內(nèi)容提供者
Android自定義字體
Android Service
Android CheckBox
Android Intent過濾器
Android LinearLayout
Android登錄實(shí)例
Android RadioButton
Android樣式和主題
Android自定義組件及屬性
Android UI控件
Android Animation(動(dòng)畫)實(shí)例
Android Camera(攝像頭)
Android ToggleButton
Android Clipboard(復(fù)制/剪貼板)
Android音頻捕獲(錄音)
發(fā)布Android應(yīng)用
Android Alertdialog(警告對(duì)話框)
Android圖片效果
Android內(nèi)部存儲(chǔ)
Android基于位置服務(wù)
Android RadioGroup
Android AutoCompleteTextView
Android Bluetooth(藍(lán)牙)實(shí)例
Android RelativeLayout
Android最佳實(shí)踐
Android本地化
Android自定義組件
Android教程
Android 架構(gòu)
Android UI布局
Android Button
Android Hello World示例
Android音頻管理器實(shí)例
ArrayAdapter
Android拖放
Android碎片/片段
Android圖片切換
Android JSON解析器
Android開發(fā)環(huán)境搭建
Android Spinner
Android樣式示例
使用活動(dòng)代碼自定義Android組件
Android ImageButton
Android EditText
Android廣播接收器

Android UI布局

用戶界面的基本構(gòu)建塊是創(chuàng)建View類View對(duì)象,并占據(jù)屏幕上的一個(gè)矩形區(qū)域,負(fù)責(zé)繪圖和事件處理。View是用于創(chuàng)建交互式UI組件,它是按鈕,文本框等部件的基類。

ViewGroup是View的一個(gè)子類,并提供了無形的容器,容納其他視圖或其他ViewGroup定義布局屬性。

第三個(gè)層次,不同的布局是ViewGroup類的子類,一個(gè)典型的布局定義為 Android 用戶界面,并且可以在運(yùn)行時(shí)創(chuàng)建,使用 View/ViewGroup 對(duì)象可視結(jié)構(gòu)或者可以聲明布局,使用簡(jiǎn)單的XML文件main_layout.xml,這個(gè)文件在項(xiàng)目res/layout文件夾中。

本教程是更多是關(guān)于創(chuàng)建基于圖形用戶界面XML文件的布局定義。布局可以包含任何類型的部件,如按鈕,標(biāo)簽,文本框等等。以下是一個(gè)簡(jiǎn)單的XML文件的LinearLayout 例子:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="fill_parent" 
	android:layout_height="fill_parent" 
	android:orientation="vertical" >
	<TextView android:id="@+id/text"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:text="This is a TextView" />
	<Button android:id="@+id/button"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:text="This is a Button" />
	
	<!-- More GUI components go here  -->
	
</LinearLayout>

布局定義之后,可以從應(yīng)用程序代碼加載的布局資源,在Activity.onCreate()回調(diào)實(shí)現(xiàn),如下所示:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

Android布局類型

有一些Android提供的布局,可以使用在幾乎所有的Android應(yīng)用程序提供不同的視圖,外觀和風(fēng)格。

S.N. 布局和說明
1 Linear Layout
LinearLayout視圖組,所有的子視圖在單一的方向?qū)R,垂直或水平。
2 Relative Layout
RelativeLayout相對(duì)位置顯示子視圖的視圖組。
3 Table Layout
TableLayout一種視圖,組視圖分為行和列。
4 Absolute Layout
AbsoluteLayout 使能夠指定其子視圖的確切位置。
5 Frame Layout
FrameLayout 屏幕上是一個(gè)占位符,可以用它來顯示一個(gè)單一的視圖。
6 List View
ListView顯示滾動(dòng)項(xiàng)目列表視圖組。
7 Grid View
GridView 網(wǎng)格控件是一種ViewGroup用于顯示一個(gè)二維,滾動(dòng)的網(wǎng)格的項(xiàng)目。

布局屬性

每個(gè)布局都有一組屬性,它定義布局的視覺屬性。所有布局中,有幾個(gè)共同的屬性和其他屬性布局。以下是常見的屬性并可以應(yīng)用到所有的布局中:

屬性 描述
android:id 唯一地標(biāo)識(shí)該視圖的ID
android:layout_width 布局的寬度
android:layout_height 這是布局的高度
android:layout_marginTop 這是關(guān)于布局的頂側(cè)的額外的空間
android:layout_marginBottom 在布局上的底側(cè)的額外的空間
android:layout_marginLeft 在布局上的左側(cè)的額外的空間
android:layout_marginRight 在右側(cè)的布局的額外空間
android:layout_gravity 它指定子視圖被定位
android:layout_weight 指定有多少布局額外的空間應(yīng)該分配給視圖
android:layout_x 指定布局的x坐標(biāo)
android:layout_y 此指定布局的y坐標(biāo)
android:layout_width 布局的寬度
android:layout_width 布局的寬度
android:paddingLeft 布局的左填充
android:paddingRight 布局的右填充
android:paddingTop 布局頂部填充
android:paddingBottom 布局底部填充

這里布局/視圖的寬度和高度的尺寸可以指定在DP(密度獨(dú)立像素),SP(規(guī)模獨(dú)立像素),PT(點(diǎn)為1/72英寸),PX(像素),mm(毫米),或(英寸)。

可以指定寬度和高度精確的測(cè)量,但更多的時(shí)候,使用這些常量作為寬度或高度設(shè)置:

  • android:layout_width=wrap_content 告訴視圖,其內(nèi)容所需要的尺寸大小本身。

  • android:layout_width=fill_parent 告訴視圖如其父視圖一樣尺寸大小。

Gravity 屬性定位視圖對(duì)象中起著重要的作用,它可以采取一個(gè)或多個(gè)(“|”分隔)的恒定值,具體如下:

常量 描述
top 0x30 推進(jìn)對(duì)象到其容器的頂部,不改變其大小
bottom 0x50 推進(jìn)對(duì)象到其容器的底部,不改變其大小
left 0x03 推進(jìn)對(duì)象到其容器的左側(cè),不改變其大小
right 0x05 推進(jìn)對(duì)象到其容器的右側(cè),不改變其大小
center_vertical 0x10 放置對(duì)象在其容器的垂直中心,在不改變其大小
fill_vertical 0x70 如果需要的話完全填滿其容器增長(zhǎng)對(duì)象的垂直尺寸
center_horizontal 0x01 放置對(duì)象在其容器的水平中心,不改變其大小
fill_horizontal 0x07 如果需要的話完全填滿其容器增長(zhǎng)的對(duì)象的水平尺寸
center 0x11 放置對(duì)象在其容器的同時(shí)在垂直和水平軸的中心,而不改變其大小
fill 0x77 如果需要的話完全填滿其容器增長(zhǎng)的對(duì)象的水平和垂直尺寸
clip_vertical 0x80 可以設(shè)置附加的選項(xiàng),使頂部和/或子視圖底部邊緣夾在其容器的邊界。剪輯將基于垂直重力:頂重力將剪輯底部邊緣,一個(gè)底重力將夾的頂邊,并也不會(huì)夾兩側(cè)邊緣
clip_horizontal 0x08 可以設(shè)置附加的選項(xiàng),使左和/或子視圖右邊緣夾在其容器的邊界。剪輯將根據(jù)水平重力:左重力將剪輯的右邊緣,右重力將剪輯的左邊緣,并且也不會(huì)夾兩邊
start 0x00800003 推進(jìn)對(duì)象到其容器的開頭,不改變其大小
end 0x00800005 推進(jìn)對(duì)象到其容器的末尾,不改變其大小

視圖標(biāo)識(shí)

一個(gè)視圖對(duì)象有一個(gè)唯一的ID分配給它,用于唯一識(shí)別視圖。ID在XML標(biāo)簽的語法是:

android:id="@+id/my_button"

以下是@+ 符號(hào)的簡(jiǎn)要說明:

  • 在符號(hào)(@)開頭的字符串表示XML解析器解析和擴(kuò)展ID字符串的其余部分,將其識(shí)別為一個(gè)ID的資源。

  • 加號(hào)(+)表示,這是一個(gè)新的資源名,必須創(chuàng)建并添加到資源中。要?jiǎng)?chuàng)建一個(gè)視圖對(duì)象的實(shí)例,并捕捉到它的布局,使用以下命令:

Button myButton = (Button) findViewById(R.id.my_button);