Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> 關於Android RelativeLayout的一些看法

關於Android RelativeLayout的一些看法

編輯:Android開發實例

首先,交代情況,以前很少用RelativeLayout,但是這次項目用到了,就拿來用,發現這東西太靈活了。很容易給人造成一些錯誤。

下面談談聽雪的看法。

 

引用
From Tutorials:

If you find yourself using several nested LinearLayout groups, you may be able toreplace them with a single RelativeLayout



以上來自Tutorials,聽雪理解的觀點是,當有過個ViewGroup嵌套的時候,再去考慮用RelativeLayout,聽雪覺得既然官方這麼寫,很程度是因為,RelativeLayout太靈活了,它的靈活性給我們對UI的控制多少回造成一定影響。

曾經有人跟聽雪說過,RelativeLayout跟FrameLayout有一些相似,給人的感覺是分層的。有層的這個概念。
聽雪覺得不是這樣的,是沒有層的概念的。從官方的解釋上可以看出這東西就是可以設置相對布局的一個布局而已。沒有層的概念。

先上段代碼,更直觀的看看。
 

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <RelativeLayout  
  3.     xmlns:android="http://schemas.android.com/apk/res/android" 
  4.     android:layout_width="fill_parent" 
  5.     android:layout_height="fill_parent" 
  6.     android:background="#CCFFFF">  
  7.     <LinearLayout  
  8.         android:id="@+id/linearLayout" 
  9.         android:layout_width="fill_parent" 
  10.         android:layout_height="200dp" 
  11.         android:background="#32000033" 
  12.         android:orientation="vertical">  
  13.         <Button  
  14.             android:id="@+id/button1" 
  15.             android:layout_width="fill_parent" 
  16.             android:layout_height="wrap_content" 
  17.             android:background="#FF3300" 
  18.             android:text="Button" />  
  19.         <TextView  
  20.             android:id="@+id/textView" 
  21.             android:layout_width="fill_parent" 
  22.             android:layout_height="wrap_content" 
  23.             android:layout_weight="1" 
  24.             android:text="Base" 
  25.             android:textColor="#6633FF" 
  26.             android:gravity="center" />  
  27.         <Button  
  28.             android:id="@+id/button2" 
  29.             android:layout_width="fill_parent" 
  30.             android:layout_height="wrap_content" 
  31.             android:background="#FF3300" 
  32.             android:text="Button" />  
  33.     </LinearLayout>  
  34.     <Button  
  35.         android:id="@+id/button3" 
  36.         android:layout_width="100dp" 
  37.         android:layout_height="50dp" 
  38.         android:layout_centerInParent="true" 
  39.         android:layout_alignBottom="@id/linearLayout" 
  40.         android:text="button" />  
  41. </RelativeLayout>  
  42.  
  43.  


只貼xml,activity沒什麼東西,就顯示一下罷了。


運行效果圖
 




很明顯可以看出button3的下邊緣是跟lineLayout的下邊緣在一條水平線上的。

 

Java代碼 android:layout_alignBottom="@id/button1"  


但是當像上面一樣設置的時候,我們可能會是想讓button3的下邊緣跟button1的下邊緣在一個水平線,但是這些寫的效果卻不是按我們所想的顯示,如此設置根本不起作用。

 



這其中的原因,聽雪是這樣認為的,首先,linearLayout,Button這些組件都是在android.widget這個包中的。他們是同一級別的。只是說linearLayout是一個ViewGroup可以再包含其他的View而已。不存在其他的優先級關系。

所以,聽雪的理解是,如果Button3這個控件要同其他控件產生相互關系的話,首先他們是要位於同一級別的。(此處說的級別不是說組件級別,而是在xml文件裡面設置的級別,如:linearLayout和button3是一級的話,那button2,textView,button3既是二級)
只有同一級別的才能設置關系,否則的話設置相互之間的位置關系就不會起作用。

這就是聽雪的理解,根本不存在層的概念。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved