Hi,大家好
上次發布博文到現在已經很長時間了,年底項目非常的忙,一是抽不開時間來更新,二是可能有那麼點懶,不管什麼原因吧,對大家說聲抱歉,後續會持續更新,謝謝大家的支援!
照例,放鬆下:有一個小夥子在一個辦公大樓的門口抽著煙,一個婦女路過他身邊,並對他說,“你知道不知道這個東西會危害你的健康?我是說,你有沒有注意到香煙盒上 的那個警告(Warning)?”
小夥子說,“沒事兒,我是一個程式員”。
那婦女說,“這又怎樣?”
程式員說,“我們從來不關心Warning,只關心Error”
今天,主要來說說Android中的布局,肯定會有人說,現在網路上一搜一大把這樣的文章,沒意思,確實,畢竟那麼多人都在編寫發表博文,但是好像沒有多少文章會以一個例子來講解這些布局知識點,這篇博文主要還是講解一些基礎的知識點,下一篇主要用一個執行個體來總結布局知識,下邊是目標效果,會在下篇博文中討論,以方便日後的翻閱。高手就跳過吧!
Android 中有五大布局,分別是
線性布局 - Linear Layout
相對布局 - Relative Layout
表格版面配置 - Table Layout
相對布局 - AbsoluteLayout
架構布局 – FrameLayout
我在開發中,常用線性布局和相對布局,在此主要對這兩種布局進行講解。
線性布局主要又分為垂直線性布局和水平線性布局,主要使用
android:orientation=”vertical”和android:orientation=”horizontal ”,效果分別如下:
•發現如果螢幕寬度或高度不夠時,會有變形和顯示不全的效果,那麼如何避免這種情況呢?
•android:layout_weight=“1”
•這個屬性比較重要:每個控制項的預設值為0 ,意思是控制項是根據自身的寬高來劃分空間,如果控制項過多,超出一屏時,就會被遮擋住。
•如果為每個控制項都定義這個屬性,並且值都為1,那麼就會對這些控制項的父元素的可用空間進行劃分。
•例:如果有5個控制項,每個Weight=1,那麼意味著父元素的空間將被劃分成5份,每一個控制項將佔據1/5,Weight值越高,那麼它所佔的比例也就越大。
一般情況下,在做UI時,都會採用嵌套的方式來實現複雜的布局,例如:垂直線性套水平線性或者垂直線性套相對布局等,都需要各位多去動手實踐。
相對布局:
•概念
•允許子項目指定他們相對於其它元素或父元素的位置(通過ID 指定)。
•如果布局檔案中有多層嵌套LinearLayout時,可以考慮使用相對布局
•需要用到的屬性
•android:layout_marginTop=“25dip” //頂部距離
android:gravity=“left” //控制項中文本位置
android:layout_marginLeft="15dip //距離左邊距
// 相對於給定ID控制項
android:layout_above 將該控制項的底部置於給定ID的控制項之上(將該控制項置於指定控制項的上面);
android:layout_below 將該控制項的頂部置於給定ID的控制項之下(將該控制項置於指定控制項的下面);
android:layout_toLeftOf 將該控制項的右邊緣與給定ID的控制項左邊緣對齊;
android:layout_toRightOf將該控制項的左邊緣與給定ID的控制項右邊緣對齊;
android:layout_alignBaseline將該控制項的baseline與給定ID的baseline對齊;
android:layout_alignTop 將該控制項的頂部邊緣與給定ID的頂部邊緣對齊;
android:layout_alignBottom將該控制項的底部邊緣與給定ID的底部邊緣對齊;
android:layout_alignLeft 將該控制項的左邊緣與給定ID的左邊緣對齊;
android:layout_alignRight 將該控制項的右邊緣與給定ID的右邊緣對齊;
// 相對於父組件
android:layout_alignParentTop 如果為true,將該控制項的頂部與其父控制項的頂部對齊;
android:layout_alignParentBottom 如果為true,將該控制項的底部與其父控制項的底部對齊;
android:layout_alignParentLeft 如果為true,將該控制項的左部與其父控制項的左部對齊;
android:layout_alignParentRight 如果為true,將該控制項的右部與其父控制項的右部對齊;
•// 置中
android:layout_centerHorizontal 如果為true,將該控制項的置於水平置中;
android:layout_centerVertical 如果為true,將該控制項的置於垂直置中;
android:layout_centerInParent 如果為true,將該控制項的置於父控制項的中央;
// 指定移動像素
android:layout_marginTop 上位移的值;
android:layout_marginBottom 下位移的值;
android:layout_marginLeft 左位移的值;
android:layout_marginRight 右位移的值;
以下是一個簡單的登入框效果
好了,剩下的三種布局在開發中我幾乎沒咋用過,個人感覺這兩種布局就可以實現複雜的頁面了。我總結了Android常用的布局-屬性的協助文檔和這節的原始碼都上傳到了天聖達公司的網站,大家可以去下載。地址 http://www.tsdapp.com/android.html