西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴(lài)的軟件下載站!
軟件
軟件
文章
搜索
鐢熸椿鏈嶅姟
鏀粯瀹濋挶鍖�(Alipay)V10.2.53.7000 瀹夊崜鐗�鏀粯瀹濋挶鍖�(Alipay)V10.2.53.7000 瀹夊崜鐗�
鐧惧害鍦板浘瀵艰埅2022V15.12.10 瀹夊崜鎵嬫満鐗�鐧惧害鍦板浘瀵艰埅2022V15.12.10 瀹夊崜鎵嬫満鐗�
鎵嬫満娣樺疂瀹㈡埛绔痸10.8.40瀹樻柟鏈€鏂扮増鎵嬫満娣樺疂瀹㈡埛绔痸10.8.40瀹樻柟鏈€鏂扮増
鐣呴€旂綉鎵嬫満瀹㈡埛绔痸5.6.9 瀹樻柟鏈€鏂扮増鐣呴€旂綉鎵嬫満瀹㈡埛绔痸5.6.9 瀹樻柟鏈€鏂扮増
鍗冭亰鐭ヨ瘑鏈嶅姟appv4.5.1瀹樻柟鐗�鍗冭亰鐭ヨ瘑鏈嶅姟appv4.5.1瀹樻柟鐗�
褰遍煶鎾斁
p2psearcher瀹夊崜鐗�7.3  鎵嬫満鐗�p2psearcher瀹夊崜鐗�7.3 鎵嬫満鐗�
閰风嫍闊充箰2022瀹樻柟鐗圴11.0.8 瀹樻柟瀹夊崜鐗�閰风嫍闊充箰2022瀹樻柟鐗圴11.0.8 瀹樻柟瀹夊崜鐗�
鐖卞鑹烘墜鏈虹増v13.1.0鐖卞鑹烘墜鏈虹増v13.1.0
鐧惧害褰遍煶7.13.0 瀹樻柟鏈€鏂扮増鐧惧害褰遍煶7.13.0 瀹樻柟鏈€鏂扮増
褰遍煶鍏堥攱v6.9.0 瀹夊崜鎵嬫満鐗�褰遍煶鍏堥攱v6.9.0 瀹夊崜鎵嬫満鐗�
闃呰宸ュ叿
鑵捐鍔ㄦ极V9.11.5 瀹夊崜鐗�鑵捐鍔ㄦ极V9.11.5 瀹夊崜鐗�
涔︽棗灏忚鍏嶈垂鐗堟湰v11.5.5.153 瀹樻柟鏈€鏂扮増涔︽棗灏忚鍏嶈垂鐗堟湰v11.5.5.153 瀹樻柟鏈€鏂扮増
QQ闃呰鍣╝ppV7.7.1.910 瀹樻柟鏈€鏂扮増QQ闃呰鍣╝ppV7.7.1.910 瀹樻柟鏈€鏂扮増
鎳掍汉鐣呭惉鍚功appv7.1.5 瀹樻柟瀹夊崜鐗�鎳掍汉鐣呭惉鍚功appv7.1.5 瀹樻柟瀹夊崜鐗�
璧风偣璇讳功app鏂扮増鏈�20227.9.186 瀹夊崜鐗�璧风偣璇讳功app鏂扮増鏈�20227.9.186 瀹夊崜鐗�
閲戣瀺鐞嗚储
骞冲畨璇佸埜瀹塭鐞嗚储V9.1.0.1 瀹樻柟瀹夊崜鐗�骞冲畨璇佸埜瀹塭鐞嗚储V9.1.0.1 瀹樻柟瀹夊崜鐗�
娴烽€氳瘉鍒告墜鏈虹増(e娴烽€氳储)8.71 瀹樻柟瀹夊崜鐗�娴烽€氳瘉鍒告墜鏈虹増(e娴烽€氳储)8.71 瀹樻柟瀹夊崜鐗�
涓滄捣璇佸埜涓滄捣鐞嗚储4.0.5 瀹夊崜鐗�涓滄捣璇佸埜涓滄捣鐞嗚储4.0.5 瀹夊崜鐗�
涓摱璇佸埜绉诲姩鐞嗚储杞欢6.02.010 瀹樻柟瀹夊崜鐗�涓摱璇佸埜绉诲姩鐞嗚储杞欢6.02.010 瀹樻柟瀹夊崜鐗�
鍗庨緳璇佸埜灏忛噾鎵嬫満鐞嗚储杞欢3.2.4 瀹夊崜鐗�鍗庨緳璇佸埜灏忛噾鎵嬫満鐞嗚储杞欢3.2.4 瀹夊崜鐗�
鎵嬫満閾惰
绂忓缓鍐滄潙淇$敤绀炬墜鏈洪摱琛屽鎴风2.3.4 瀹夊崜鐗�绂忓缓鍐滄潙淇$敤绀炬墜鏈洪摱琛屽鎴风2.3.4 瀹夊崜鐗�
鏄撳埗浣滆棰戝壀杈慳pp4.1.16瀹夊崜鐗�鏄撳埗浣滆棰戝壀杈慳pp4.1.16瀹夊崜鐗�
鏀粯瀹濋挶鍖�(Alipay)V10.2.53.7000 瀹夊崜鐗�鏀粯瀹濋挶鍖�(Alipay)V10.2.53.7000 瀹夊崜鐗�
涓浗宸ュ晢閾惰鎵嬫満閾惰appV7.0.1.2.5 瀹夊崜鐗�涓浗宸ュ晢閾惰鎵嬫満閾惰appV7.0.1.2.5 瀹夊崜鐗�
涓浗閾惰鎵嬫満閾惰瀹㈡埛绔�7.2.5 瀹樻柟瀹夊崜鐗�涓浗閾惰鎵嬫満閾惰瀹㈡埛绔�7.2.5 瀹樻柟瀹夊崜鐗�
浼戦棽鐩婃櫤
鑵捐鐚庨奔杈句汉鎵嬫満鐗圴2.3.0.0 瀹樻柟瀹夊崜鐗�鑵捐鐚庨奔杈句汉鎵嬫満鐗圴2.3.0.0 瀹樻柟瀹夊崜鐗�
鍔茶垶鍥㈠畼鏂规鐗堟墜娓竩1.2.1瀹樻柟鐗�鍔茶垶鍥㈠畼鏂规鐗堟墜娓竩1.2.1瀹樻柟鐗�
楗ラタ椴ㄩ奔杩涘寲鏃犻檺閽荤煶鐗坴7.8.0.0瀹夊崜鐗�楗ラタ椴ㄩ奔杩涘寲鏃犻檺閽荤煶鐗坴7.8.0.0瀹夊崜鐗�
妞嶇墿澶ф垬鍍靛案鍏ㄦ槑鏄�1.0.91 瀹夊崜鐗�妞嶇墿澶ф垬鍍靛案鍏ㄦ槑鏄�1.0.91 瀹夊崜鐗�
鍔ㄤ綔灏勫嚮
鍦颁笅鍩庣獊鍑昏€卋t鐗�1.6.3 瀹樻柟鐗�鍦颁笅鍩庣獊鍑昏€卋t鐗�1.6.3 瀹樻柟鐗�
瑁呯敳鑱旂洘1.325.157 瀹夊崜鐗�瑁呯敳鑱旂洘1.325.157 瀹夊崜鐗�
鍦f枟澹槦鐭㈤泦缁搗4.2.1 瀹夊崜鐗�鍦f枟澹槦鐭㈤泦缁搗4.2.1 瀹夊崜鐗�
閬ぉ3D鎵嬫父1.0.9瀹夊崜鐗�閬ぉ3D鎵嬫父1.0.9瀹夊崜鐗�
濉旈槻娓告垙
瀹夊崜妞嶇墿澶ф垬鍍靛案2榛戞殫鏃朵唬淇敼鐗圴1.9.5 鏈€鏂扮増瀹夊崜妞嶇墿澶ф垬鍍靛案2榛戞殫鏃朵唬淇敼鐗圴1.9.5 鏈€鏂扮増
涔辨枟瑗挎父2v1.0.150瀹夊崜鐗�涔辨枟瑗挎父2v1.0.150瀹夊崜鐗�
淇濆崼钀濆崪3鏃犻檺閽荤煶鏈€鏂扮増v2.0.0.1 瀹夊崜鐗�淇濆崼钀濆崪3鏃犻檺閽荤煶鏈€鏂扮増v2.0.0.1 瀹夊崜鐗�
鍙h鑻遍泟鍗曟満鐗�1.2.0 瀹夊崜鐗�鍙h鑻遍泟鍗曟満鐗�1.2.0 瀹夊崜鐗�
灏忓皬鍐涘洟瀹夊崜鐗�2.7.4 鏃犻檺閲戝竵淇敼鐗�灏忓皬鍐涘洟瀹夊崜鐗�2.7.4 鏃犻檺閲戝竵淇敼鐗�
璧涜溅绔炴妧
鐧诲北璧涜溅2鎵嬫父1.47.1  瀹夊崜鐗�鐧诲北璧涜溅2鎵嬫父1.47.1 瀹夊崜鐗�
涓€璧锋潵椋炶溅瀹夊崜鐗坴2.9.14 鏈€鏂扮増涓€璧锋潵椋炶溅瀹夊崜鐗坴2.9.14 鏈€鏂扮増
璺戣窇鍗′竵杞︽墜鏈虹増瀹樻柟鏈€鏂扮増v1.16.2 瀹夊崜鐗�璺戣窇鍗′竵杞︽墜鏈虹増瀹樻柟鏈€鏂扮増v1.16.2 瀹夊崜鐗�
鐙傞噹椋欒溅8鏋侀€熷噷浜戜慨鏀圭増(鍏嶆暟鎹寘)v4.6.0j 閲戝竵鏃犻檺鐗�鐙傞噹椋欒溅8鏋侀€熷噷浜戜慨鏀圭増(鍏嶆暟鎹寘)v4.6.0j 閲戝竵鏃犻檺鐗�
鐧句箰鍗冪偖鎹曢奔2021鏈€鏂扮増5.78 瀹夊崜鐗�鐧句箰鍗冪偖鎹曢奔2021鏈€鏂扮増5.78 瀹夊崜鐗�
瑙掕壊鎵紨
姊﹀够鍓戣垶鑰呭彉鎬佺増1.0.1.2瀹夊崜鐗�姊﹀够鍓戣垶鑰呭彉鎬佺増1.0.1.2瀹夊崜鐗�
浠欏浼犺ro澶嶅叴瀹夊崜鐗�1.20.3鏈€鏂扮増浠欏浼犺ro澶嶅叴瀹夊崜鐗�1.20.3鏈€鏂扮増
姊﹀够璇涗粰鎵嬫父鐗�1.3.6 瀹樻柟瀹夊崜鐗�姊﹀够璇涗粰鎵嬫父鐗�1.3.6 瀹樻柟瀹夊崜鐗�
鐜嬭€呰崳鑰€V3.72.1.1 瀹夊崜鏈€鏂板畼鏂圭増鐜嬭€呰崳鑰€V3.72.1.1 瀹夊崜鏈€鏂板畼鏂圭増
璋佸灏忚溅寮烘墜鏈虹増v1.0.49 瀹夊崜鐗�璋佸灏忚溅寮烘墜鏈虹増v1.0.49 瀹夊崜鐗�
绯荤粺杞欢
mac纾佺洏鍒嗗尯宸ュ叿(Paragon Camptune X)V10.8.12瀹樻柟鏈€鏂扮増mac纾佺洏鍒嗗尯宸ュ叿(Paragon Camptune X)V10.8.12瀹樻柟鏈€鏂扮増
鑻规灉鎿嶄綔绯荤粺MACOSX 10.9.4 Mavericks瀹屽叏鍏嶈垂鐗�鑻规灉鎿嶄綔绯荤粺MACOSX 10.9.4 Mavericks瀹屽叏鍏嶈垂鐗�
Rar瑙e帇鍒╁櫒mac鐗坴1.4 瀹樻柟鍏嶈垂鐗�Rar瑙e帇鍒╁櫒mac鐗坴1.4 瀹樻柟鍏嶈垂鐗�
Mac瀹夊崜妯℃嫙鍣�(ARC Welder)v1.0 瀹樻柟鏈€鏂扮増Mac瀹夊崜妯℃嫙鍣�(ARC Welder)v1.0 瀹樻柟鏈€鏂扮増
Charles for MacV3.9.3瀹樻柟鐗�Charles for MacV3.9.3瀹樻柟鐗�
缃戠粶宸ュ叿
鎼滅嫍娴忚鍣╩ac鐗坴5.2 瀹樻柟姝e紡鐗�鎼滅嫍娴忚鍣╩ac鐗坴5.2 瀹樻柟姝e紡鐗�
閿愭嵎瀹㈡埛绔痬ac鐗圴1.33瀹樻柟鏈€鏂扮増閿愭嵎瀹㈡埛绔痬ac鐗圴1.33瀹樻柟鏈€鏂扮増
蹇墮mac鐗坴1.3.2 瀹樻柟姝e紡鐗�蹇墮mac鐗坴1.3.2 瀹樻柟姝e紡鐗�
鏋佺偣浜旂瑪Mac鐗�7.13姝e紡鐗�鏋佺偣浜旂瑪Mac鐗�7.13姝e紡鐗�
濯掍綋宸ュ叿
Apple Logic Pro xV10.3.2Apple Logic Pro xV10.3.2
Adobe Premiere Pro CC 2017 mac鐗坴11.0.0 涓枃鐗�Adobe Premiere Pro CC 2017 mac鐗坴11.0.0 涓枃鐗�
鍗冨崈闈欏惉Mac鐗圴9.1.1 瀹樻柟鏈€鏂扮増鍗冨崈闈欏惉Mac鐗圴9.1.1 瀹樻柟鏈€鏂扮増
Mac缃戠粶鐩存挱杞欢(MacTV)v0.121 瀹樻柟鏈€鏂扮増Mac缃戠粶鐩存挱杞欢(MacTV)v0.121 瀹樻柟鏈€鏂扮増
Adobe Fireworks CS6 Mac鐗圕S6瀹樻柟绠€浣撲腑鏂囩増Adobe Fireworks CS6 Mac鐗圕S6瀹樻柟绠€浣撲腑鏂囩増
鍥惧舰鍥惧儚
AutoCAD2015 mac涓枃鐗堟湰v1.0 瀹樻柟姝e紡鐗�AutoCAD2015 mac涓枃鐗堟湰v1.0 瀹樻柟姝e紡鐗�
Adobe Photoshop cs6 mac鐗坴13.0.3 瀹樻柟涓枃鐗�Adobe Photoshop cs6 mac鐗坴13.0.3 瀹樻柟涓枃鐗�
Mac鐭㈤噺缁樺浘杞欢(Sketch mac)v3.3.2 涓枃鐗�Mac鐭㈤噺缁樺浘杞欢(Sketch mac)v3.3.2 涓枃鐗�
Adobe After Effects cs6 mac鐗坴1.0涓枃鐗�Adobe After Effects cs6 mac鐗坴1.0涓枃鐗�
Adobe InDesign cs6 mac1.0 瀹樻柟涓枃鐗�Adobe InDesign cs6 mac1.0 瀹樻柟涓枃鐗�
搴旂敤杞欢
Mac鐗堝揩鎾�1.1.26 瀹樻柟姝e紡鐗圼dmg]Mac鐗堝揩鎾�1.1.26 瀹樻柟姝e紡鐗圼dmg]
Mac璇诲啓NTFS(Paragon NTFS for Mac)12.1.62 瀹樻柟姝e紡鐗�Mac璇诲啓NTFS(Paragon NTFS for Mac)12.1.62 瀹樻柟姝e紡鐗�
杩呴浄10 for macv3.4.1.4368 瀹樻柟鏈€鏂扮増杩呴浄10 for macv3.4.1.4368 瀹樻柟鏈€鏂扮増
Mac涓嬫渶寮哄ぇ鐨勭郴缁熸竻鐞嗗伐鍏�(CleanMyMac for mac)v3.1.1 姝e紡鐗�Mac涓嬫渶寮哄ぇ鐨勭郴缁熸竻鐞嗗伐鍏�(CleanMyMac for mac)v3.1.1 姝e紡鐗�
鑻规灉BootCamp5.1.5640 瀹樻柟鏈€鏂扮増鑻规灉BootCamp5.1.5640 瀹樻柟鏈€鏂扮増

首頁(yè)硬件相關(guān)手機(jī)技術(shù) → Android 用戶(hù)界面設(shè)計(jì):線性​​布局

Android 用戶(hù)界面設(shè)計(jì):線性​​布局

相關(guān)文章發(fā)表評(píng)論 來(lái)源:西西整理時(shí)間:2011/5/7 8:33:04字體大�。�A-A+

作者:RockUX–WEB前端點(diǎn)擊:238次評(píng)論:0次標(biāo)簽: Android

  • 類(lèi)型:源碼相關(guān)大�。�23.6M語(yǔ)言:中文 評(píng)分:9.1
  • 標(biāo)簽:
立即下載

理解布局對(duì)于良好的Android程序設(shè)計(jì)來(lái)說(shuō)很重要。在這個(gè)教程中,你將學(xué)習(xí)到所有關(guān)于線性布局的東西,它在屏幕上垂直地或水平地組織用戶(hù)界面控件或者小工具。使用得當(dāng),線性布局可以作為基本的布局,基于這個(gè)布局來(lái)可以設(shè)計(jì)出許多有趣的Android程序用戶(hù)界面。

什么是線性布局

線性布局是最簡(jiǎn)單,Android開(kāi)發(fā)者使用得最多的布局類(lèi)型之一,開(kāi)發(fā)者用它來(lái)組織你們的用戶(hù)界面上的控件。線性布局的作用就像它的名字一樣:它將控件組織在一個(gè)垂直或水平的形式。當(dāng)布局方向設(shè)置為垂直時(shí),它里面的所有子控件被組織在同一列中;當(dāng)布局方向設(shè)置為水平時(shí),所有子控件被組織在一行中。

線性布局可以在XML布局資源文件中定義,也可以用Java代碼在程序中動(dòng)態(tài)的定義。

下圖展示了一個(gè)包含7個(gè)TextView控件的線性布局。這個(gè)線性布局方向被設(shè)置為垂直,導(dǎo)致每個(gè)TextView控件被顯示在一列當(dāng)中。每一個(gè)TextView控件的文本屬性都是一個(gè)顏色值,背景色就是這個(gè)顏色;通過(guò)將控件的layout_width屬性設(shè)置為fill_parent,每個(gè)控件都拉伸到屏幕寬度。

用XML布局資源定義線性布局

設(shè)計(jì)程序用戶(hù)界面最方便和可維護(hù)的方法是創(chuàng)建XML布局資源。這個(gè)方法極大地簡(jiǎn)化了UI設(shè)計(jì)過(guò)程,它將很多靜態(tài)創(chuàng)建和用戶(hù)界面控件的布局以及控件屬性的定義移到了XML中,而不是寫(xiě)代碼。

XML布局資源必須被存儲(chǔ)在項(xiàng)目目錄的/res/layout下。讓我們看看前一節(jié)介紹的彩虹線性布局。這個(gè)屏幕基本上就是一個(gè)設(shè)置為鋪滿(mǎn)整個(gè)屏幕的垂直線性布局,這通過(guò)設(shè)置它的layout_width和layout_height屬性為fill_parent來(lái)實(shí)現(xiàn)。適當(dāng)?shù)貙⑵涿麨?res/layout/rainbow.xml,XML定義如下:

<?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:text="RED" android:id="@+id/TextView01"
android:layout_height="wrap_content" android:background="#f00"
android:layout_width="fill_parent" android:layout_weight=".14"
android:gravity="center" android:textColor="#000"></TextView>
<TextView android:text="ORANGE" android:id="@+id/TextView02"
android:layout_height="wrap_content" android:layout_width="fill_parent"
android:layout_weight=".15" android:background="#ffa500"
android:gravity="center" android:textColor="#000"></TextView>
<TextView android:text="YELLOW" android:id="@+id/TextView03"
android:layout_height="wrap_content" android:layout_width="fill_parent"
android:layout_weight=".14" android:background="#ffff00"
android:gravity="center" android:textColor="#000"></TextView>
<TextView android:text="GREEN" android:id="@+id/TextView04"
android:layout_height="wrap_content" android:layout_width="fill_parent"
android:layout_weight=".15" android:background="#0f0" android:gravity="center"
android:textColor="#000"></TextView>
<TextView android:text="BLUE" android:id="@+id/TextView05"
android:layout_height="wrap_content" android:layout_width="fill_parent"
android:layout_weight=".14" android:background="#00f" android:gravity="center"
android:textColor="#fff"></TextView>
<TextView android:text="INDIGO" android:id="@+id/TextView06"
android:layout_height="wrap_content" android:layout_width="fill_parent"
android:layout_weight=".14" android:background="#4b0082"
android:gravity="center" android:textColor="#fff"></TextView>
<TextView android:text="VIOLET" android:id="@+id/TextView07"
android:layout_height="wrap_content" android:layout_width="fill_parent"
android:layout_weight=".14" android:background="#ee82ee"
android:gravity="center" android:textColor="#000"></TextView>
</LinearLayout>

可能你會(huì)注意到這個(gè)線性布局的每一個(gè)子控件都有很多有趣的屬性,包括一個(gè)叫做layout_weight的屬性。一會(huì)我們會(huì)講到更多關(guān)于它的內(nèi)容。

下面兩張圖片展示了這個(gè)布局在設(shè)備的豎屏和橫屏模式下的樣子:

回憶一下,在Activity中,只需要一行有onCreate()方法的代碼來(lái)在屏幕上加載和顯示一個(gè)布局資源。如果這個(gè)布局資源被存儲(chǔ)在/res/layout/rainbow.xml文件中,這行代碼應(yīng)該是:

setContentView(R.layout.rainbow);

用程序動(dòng)態(tài)定義線性布局

你也可以通過(guò)程序來(lái)創(chuàng)建和配置線性布局。這通過(guò)LinearLayout(android.widget.LinearLayout)類(lèi)來(lái)實(shí)現(xiàn)。你能在LinearLayout.LayoutParams類(lèi)中找到子級(jí)細(xì)節(jié)。同樣地,典型的布局參數(shù)(android.view.ViewGroup.LayoutParams),如layout_height和layout_width, 以及邊距參數(shù)(ViewGroup.MarginLayoutParams)也能用在LinearLayout對(duì)象上。

使用以前介紹過(guò)的setContentView()方法代替直接加載布局資源,你需要用Java創(chuàng)建屏幕內(nèi)容,然后向setContentView()方法提供一個(gè)父級(jí)布局對(duì)象,這個(gè)對(duì)象包括了所有要作為它的子視圖展示的控件內(nèi)容。在這種情況下,你的父級(jí)布局對(duì)象是線性布局。

例如,下面的代碼示例了如何用程序在Activity中實(shí)例化一個(gè)線性布局并在它的onCreate()方法中將三個(gè)TextView對(duì)象放入其中:

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.rainbow);
TextView tv1 = new TextView(this);
tv1.setText("FIRST");
tv1.setTextSize(100);
tv1.setGravity(Gravity.CENTER);
TextView tv2 = new TextView(this);
tv2.setTextSize(100);
tv2.setGravity(Gravity.CENTER);
tv2.setText("MIDDLE");
TextView tv3 = new TextView(this);
tv3.setTextSize(100);
tv3.setGravity(Gravity.CENTER);
tv3.setText("LAST");
LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);
ll.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
ll.setGravity(Gravity.CENTER);
ll.addView(tv1);
ll.addView(tv2);
ll.addView(tv3);
setContentView(ll);
}

下面兩張圖片展示了這個(gè)布局在設(shè)備豎屏和橫屏下的樣子:

讓我們更近一步地研究一下上面的Java代碼。首先,創(chuàng)建并配置三個(gè)TextView控件。每個(gè)控件都有文本大�。ㄗ煮w大�。�,文本對(duì)齊,以及文本值本身。然后,創(chuàng)建一個(gè)垂直方向的線性布局。它的布局參數(shù)允許它填充整個(gè)父級(jí)對(duì)象(在這里就是整個(gè)屏幕),并且它的對(duì)齊導(dǎo)致所有子控件都排列在屏幕中間,而不是從左上角開(kāi)始。每個(gè)TextView控件通過(guò)addView方法作為子控件添加到線性布局中。最后,當(dāng)父級(jí)控件要在屏幕上顯示時(shí),線性布局被傳到setContentView()方法中。

如你所見(jiàn),當(dāng)越來(lái)越多的控件要添加到屏幕時(shí),代碼量會(huì)很快地增長(zhǎng)。為了易組織和可維護(hù)性,用程序定義并使用布局最好是用在特殊情況而不是一般情況。

探討線性布局的重要特性和屬性

現(xiàn)在讓我們來(lái)看看有助于配置線性布局和它的子控件的一些重要屬性。

一些特別的屬性應(yīng)用到線性布局。你會(huì)使用到線性布局最重要的屬性包括:

方向?qū)傩裕ū仨殻�,取值可以是vertical或horizontal(類(lèi):LinearLayout)

對(duì)齊屬性(可選),控制子控件在線性布局中如何排列和顯示(類(lèi):LinearLayout)

layout_weight屬性(可選,應(yīng)用到每個(gè)子控件)指定每個(gè)子控件在父級(jí)線性布局中的相對(duì)重要性(類(lèi):LinearLayout.LayoutParams)

此外,通用的ViewGroup-style屬性也應(yīng)用到線性布局。這些屬性包括:

通用布局參數(shù)如layout_height (必須)和layout_width (必須) (類(lèi):ViewGroup.LayoutParams)

邊距布局參數(shù)如margin_top,margin_left,margin_right和margin_bottom (類(lèi):ViewGroup. MarginLayoutParams)

布局參數(shù)如layout_height和layout_width (類(lèi):ViewGroup.LayoutParams)

給子控件賦權(quán)

絕大部分線性布局的屬性都是自明性的。然而layout_weight屬性需要一些額外的討論。與其它線性布局屬性不同,其它屬性應(yīng)用在線性布局視圖本身,而這個(gè)屬性是應(yīng)用在它的子控件上的。權(quán)值本身應(yīng)該是一個(gè)數(shù)字(比如0.5,0.25,0.10,0.10,0.05),如果你把所有子控件的權(quán)值加起來(lái)等于1(100%)。

子控件的權(quán)值控件它在父線性布局中有多“重要”或者留給其多少“空間”。這一點(diǎn)最好通過(guò)例子來(lái)說(shuō)明。讓我們回到我們前面用的彩虹線性布局。為了允許所有子控件相同地“拉伸”填充線性布局,不管屏幕的大小,我們使用layout_weight來(lái)對(duì)每個(gè)TextView賦予相對(duì)權(quán)值。因?yàn)橛?種我們想賦相同權(quán)值的顏色,我們將1除以7大約得到0.143.然而,既然我們想要權(quán)值之和最后為1,因此5個(gè)控件權(quán)值設(shè)為0.14,另外兩個(gè)為0.15——一個(gè)微小的區(qū)別使得總和剛剛好為1,但是這對(duì)于第一個(gè)和最后一個(gè)控件來(lái)說(shuō)還是很明顯的。

當(dāng)屏幕上有足夠空間來(lái)正確的展示所有控件的時(shí)候,這個(gè)權(quán)值技巧很有效。那就是說(shuō),當(dāng)空間很緊的時(shí)候,權(quán)值屬性可能會(huì)被其它因素覆蓋,比如視圖裁剪或者在TextView下試圖不環(huán)繞文本。當(dāng)我們改變r(jià)ainbow.xml布局文件以包含相似水平布局(layout_height 還是設(shè)置為 fill_parent)的時(shí)候,這變得很明顯。

下面的兩張圖片展示這個(gè)相同的布局(只是改變到水平方向)在設(shè)備豎屏和橫屏模式下可能的樣子:

我們期望的是紅色和紫色區(qū)域(權(quán)值0.15)比其它顏色(權(quán)值為0.14)會(huì)略大一些,但是顯示出來(lái)卻不是這樣。如果你仔細(xì)看紅色TextView,它應(yīng)該比它邊上橙色的TextView占用更多空間。然而,因?yàn)椤癛ed”是一個(gè)短單詞,而“Orange”不是,因此系統(tǒng)自動(dòng)的作了一些沖撞調(diào)整,為了使得每個(gè)單詞不會(huì)折行。這樣的結(jié)果更令人高興,但是這可能會(huì)有一些煩惱,如果這不是想要的效果的話。

總結(jié)

Android程序用戶(hù)界面使用布局來(lái)定義,而線性布局是最基本的布局類(lèi)型之一。線性布局允許子控件被組織在一行或一行(水平)或一列(豎直)上。子控件的位置可以使用對(duì)齊和權(quán)值屬性進(jìn)一步設(shè)置。[English]

 作者:RockUX–WEB前端
出自:Android用戶(hù)界面設(shè)計(jì):線性布局

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過(guò)難過(guò)
    • 5 囧
    • 3 圍觀圍觀
    • 2 無(wú)聊無(wú)聊

    熱門(mén)評(píng)論

    最新評(píng)論

    發(fā)表評(píng)論 查看所有評(píng)論(0)

    昵稱(chēng):
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)