Android程序fill_parent比例詳解:


相信大家在剛開始學習android程序設計時,會有點搞不明白“match_parent”與“fill_parent”之間的比例問題;在此做一個實例大家就明白了!
編譯如下代碼:

 1     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:id="@+id/Line"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:orientation="horizontal"
 7     >
 8    <LinearLayout    
 9         android:layout_width="fill_parent"    
10         android:layout_height="fill_parent"    
11         android:background="#00ff00"     
12         android:layout_weight="1"/>    
13        
14         
15     <LinearLayout    
16         android:layout_width="fill_parent"    
17         android:layout_height="fill_parent"    
18         android:background="#ff0000"     
19         android:layout_weight="2"/> 
20     
21     <LinearLayout    
22         android:layout_width="fill_parent"    
23         android:layout_height="fill_parent"    
24         android:background="#0000ff"     
25         android:layout_weight="3"/> 
26         
27 </LinearLayout>

運行結果如下:

   這個時候就會有疑問了,怎么會這樣,這比例是2:1吧,那么three去哪了?代碼里面明明有 three的啊,還設置了3的,而1和2的比例也不對耶,1:2:3卻變成了2:1:0,怎么會這樣呢? 答:這里其實沒那么簡單的,還是需要我們計算的,網上給出的算法有幾種,這里就給出筆者 覺得比較容易理解的一種: step 1:個個都是fill_parent,但是屏幕只有一個啦,那么1 - 3 = - 2 fill_parent step 2:依次比例是1/6,2/6,3/6 step 3:先到先得,先分給one,計算: 1 - 2 * (1/6) = 2/3 fill_parent 接着到two,計算: 1 - 2 * (2/6) = 1/3 fill_parent 最后到three,計算 1 - 2 * (3/6) = 0 fill_parent step 4:所以最后的結果是:one占了兩份,two占了一份,three什么都木有 以上就是為什么three沒有出現的原因了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM