歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android布局的相對性

不常接觸Android布局的同學可能會為一個問題犯糊塗,即該屬性是相對於父容器還是相對於子元素,還是只對自己有效,下面我們根據一個例子來簡單理一下布局相對性的思路。

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     android:layout_width="fill_parent" 
  4.     android:layout_height="fill_parent" 
  5.     android:orientation="vertical" > 
  6.  
  7.     <!-- 
  8.         以下的LinearLayout 中 android:layout_gravity="center", 
  9.         相對於其父容器重力方向,所以水平居中 
  10.     --> 
  11.  
  12.     <LinearLayout 
  13.         android:id="@+id/linearLayout1" 
  14.         android:layout_width="200dip" 
  15.         android:layout_height="60dip" 
  16.         android:layout_gravity="center" 
  17.         android:background="#00ff00" 
  18.         android:orientation="horizontal" > 
  19.  
  20.         <TextView 
  21.             android:id="@+id/textView1" 
  22.             android:layout_width="wrap_content" 
  23.             android:layout_height="wrap_content" 
  24.             android:layout_marginRight="2dip" 
  25.             android:background="#ff0000" 
  26.             android:text="TextA" /> 
  27.  
  28.         <TextView 
  29.             android:id="@+id/textView2" 
  30.             android:layout_width="wrap_content" 
  31.             android:layout_height="wrap_content" 
  32.             android:background="#ff0000" 
  33.             android:text="TextB" /> 
  34.     </LinearLayout> 
  35.  
  36.     <!-- 
  37. 以下的LinearLayout 中android:gravity="bottom" 
  38. 表示該LinearLayout的子View相對於LinearLayout是居底部的 
  39.  
  40.     --> 
  41.  
  42.     <LinearLayout 
  43.         android:id="@+id/linearLayout2" 
  44.         android:layout_width="200dip" 
  45.         android:layout_height="60dip" 
  46.         android:layout_gravity="center" 
  47.         android:layout_marginTop="5dip" 
  48.         android:background="#ffff00" 
  49.         android:gravity="bottom" 
  50.         android:orientation="horizontal" > 
  51.  
  52.         <TextView 
  53.             android:id="@+id/TextView03" 
  54.             android:layout_width="wrap_content" 
  55.             android:layout_height="wrap_content" 
  56.             android:layout_marginRight="2dip" 
  57.             android:background="#ff0000" 
  58.             android:text="TextA" /> 
  59.  
  60.         <TextView 
  61.             android:id="@+id/TextView04" 
  62.             android:layout_width="wrap_content" 
  63.             android:layout_height="wrap_content" 
  64.             android:background="#ff0000" 
  65.             android:text="TextB" /> 
  66.     </LinearLayout> 
  67.  
  68. </LinearLayout> 

這裡對應的效果圖貼上

該圖分別對應了布局文件中的兩個布局思路介紹

相對於父元素

相對於子元素

由此我們也來發現以下一般規律:

對於android:layout_xxx開始的屬性一般用於“自身”及“相對於父元素”,如android:layout_gravity="center",相對於父容器居中

而對於android:xxx開始的屬性則一般作用域子元素,如android:orientation="vertical",其子元素居中

當然,以上只是根據命名方式做的一般性猜測,對於有些屬性,如android:layout_marginRight,其相對於父元素或兄弟元素,android:layout_height="60dip"則只對自身有效。

更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11

Copyright © Linux教程網 All Rights Reserved