本文簡述在Android開發中佈局的簡單應用,屬於基礎知識,僅供學習分享使用。 ...
本文簡述在Android開發中佈局的簡單應用,屬於基礎知識,僅供學習分享使用。
概述
在Android UI開發中,佈局類型主要有兩種:LinearLayout(線性佈局)和RelativeLayout(相對佈局),兩種佈局類型各有各的優勢與使用場景。
LinearLayout(線性佈局)
線性佈局允許所有的子元素,以單獨的方向進行排列(水平或垂直),所有的元素像棧一樣一個接一個的插入,所以如果是垂直(vertical)方向,則每一行只有一個元素。如果是水平( horizontal)方向,則只有一行。(如下圖1所示)
線性佈局重要屬性
android:orientation 設置排列的方向。主要有兩個值:horizontal(水平),vertical(垂直)。
android:layout_weight 權重,按比例分配剩餘空間。
(圖1) (圖2)
RelativeLayout(相對佈局)
相對佈局是指所有子元素以相對的位置進行定位。一個元素可以通過相對於指定的同級元素(如,左邊,右邊,上邊,下邊)進行定位,也可以通過父元素進行定位(如,佈局控制項的頂端,左端,右端,底部等)(如上圖2 所示)。如果發現頁面中有多個線性佈局進行嵌套,那麼你就應該用一個相對佈局來替換它。
相對佈局重要屬性
- android:layout_alignParentTop 是否位於父控制項的頂部(true 或 false)
- android:layout_alignParentBottom 是否位於父控制項的底部(true 或 false)
- android:layout_alignParentLeft 是否位於父控制項的左邊(true 或 false)
- android:layout_alignParentRight 是否位於父控制項的右邊(true 或 false)
- android:layout_centerInParent 是否位於父控制項的中心(true 或 false)
- android:layout_toLeftOf 位於指定控制項的左邊(值為控制項的ID)
- android:layout_toRightOf 位於指定控制項的右邊(值為控制項的ID)
- android:layout_above 位於指定控制項的上邊(值為控制項的ID)
- android:layout_below 位於指定控制項的下邊(值為控制項的ID)
實例截圖
如下圖1所示為線性佈局(相對簡單),如下圖2所示,為相對佈局(相對複雜)
圖3 圖4
佈局源程式
線性佈局
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 android:paddingBottom="@dimen/activity_vertical_margin" 8 android:paddingLeft="@dimen/activity_horizontal_margin" 9 android:paddingRight="@dimen/activity_horizontal_margin" 10 android:paddingTop="@dimen/activity_vertical_margin" 11 android:orientation="vertical" 12 tools:context="com.hex.demolayout.LinearActivity"> 13 <TextView 14 android:id="@+id/tv_text" 15 android:text="@string/tv_name" 16 android:textSize="20dp" 17 android:layout_marginTop="5dp" 18 android:textColor="@color/colorBlue" 19 android:layout_width="match_parent" 20 android:layout_height="wrap_content"/> 21 <EditText 22 android:id="@+id/txt_name" 23 android:hint="@string/hint_name" 24 android:layout_width="match_parent" 25 android:layout_height="wrap_content"/> 26 <TextView 27 android:id="@+id/tv_age" 28 android:text="@string/tv_age" 29 android:textSize="20dp" 30 android:layout_marginTop="5dp" 31 android:textColor="@color/colorBlue" 32 android:layout_width="match_parent" 33 android:layout_height="wrap_content"/> 34 <EditText 35 android:id="@+id/txt_age" 36 android:hint="@string/hint_name" 37 android:layout_width="match_parent" 38 android:layout_height="wrap_content"/> 39 <TextView 40 android:id="@+id/tv_sex" 41 android:text="@string/tv_sex" 42 android:textSize="20dp" 43 android:layout_marginTop="5dp" 44 android:textColor="@color/colorBlue" 45 android:layout_width="match_parent" 46 android:layout_height="wrap_content"/> 47 <RadioGroup 48 android:id="@+id/rg_sex" 49 android:layout_marginTop="5dp" 50 android:orientation="horizontal" 51 android:layout_width="match_parent" 52 android:layout_height="wrap_content"> 53 <RadioButton 54 android:id="@+id/rb_male" 55 android:text="@string/male" 56 android:textSize="20sp" 57 android:checked="true" 58 android:layout_width="wrap_content" 59 android:layout_height="wrap_content"/> 60 <RadioButton 61 android:id="@+id/rb_female" 62 android:textSize="20sp" 63 android:text="@string/female" 64 android:layout_marginLeft="30dp" 65 android:layout_width="wrap_content" 66 android:layout_height="wrap_content"/> 67 </RadioGroup> 68 <TextView 69 android:id="@+id/tv_love" 70 android:text="@string/love" 71 android:textSize="20dp" 72 android:layout_marginTop="5dp" 73 android:textColor="@color/colorBlue" 74 android:layout_width="match_parent" 75 android:layout_height="wrap_content"/> 76 <LinearLayout 77 android:layout_width="match_parent" 78 android:layout_height="wrap_content" 79 android:layout_marginTop="10dp" 80 android:orientation="horizontal"> 81 <CheckBox 82 android:id="@+id/ck_basketball" 83 android:text="@string/basketball" 84 android:textSize="20dp" 85 android:layout_width="wrap_content" 86 android:layout_height="wrap_content"/> 87 <CheckBox 88 android:id="@+id/ck_football" 89 android:text="@string/football" 90 android:textSize="20dp" 91 android:layout_marginLeft="30dp" 92 android:layout_width="wrap_content" 93 android:layout_height="wrap_content"/> 94 <CheckBox 95 android:id="@+id/ck_game" 96 android:text="@string/game" 97 android:textSize="20dp" 98 android:layout_marginLeft="30dp" 99 android:layout_width="wrap_content" 100 android:layout_height="wrap_content"/> 101 </LinearLayout> 102 <TextView 103 android:id="@+id/tv_school" 104 android:text="@string/school" 105 android:textSize="20dp" 106 android:layout_marginTop="5dp" 107 android:textColor="@color/colorBlue" 108 android:layout_width="match_parent" 109 android:layout_height="wrap_content"/> 110 <EditText 111 android:id="@+id/txt_school" 112 android:hint="@string/hint_school" 113 android:layout_width="match_parent" 114 android:layout_height="wrap_content"/> 115 <TextView 116 android:id="@+id/tv_addr" 117 android:text="@string/addr" 118 android:textSize="20dp" 119 android:layout_marginTop="5dp" 120 android:textColor="@color/colorBlue" 121 android:layout_width="match_parent" 122 android:layout_height="wrap_content"/> 123 <EditText 124 android:id="@+id/txt_addr" 125 android:hint="@string/hint_addr" 126 android:layout_width="match_parent" 127 android:layout_height="wrap_content"/> 128 <Button 129 android:id="@+id/bn_submit" 130 android:text="@string/bn_submit" 131 android:textColor="@color/colorBlue" 132 android:layout_width="match_parent" 133 android:layout_height="wrap_content"/> 134 </LinearLayout>View Code
相對佈局
1 <?xml version="1.0" encoding="utf-8"?> 2 <RelativeLayout 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 android:paddingBottom="@dimen/activity_vertical_margin" 8 android:paddingLeft="@dimen/activity_horizontal_margin" 9 android:paddingRight="@dimen/activity_horizontal_margin" 10 android:paddingTop="@dimen/activity_vertical_margin" 11 tools:context="com.hex.demolayout.MainActivity"> 12 13 <TextView 14 android:id="@+id/tv_title" 15 android:layout_centerHorizontal="true" 16 android:layout_alignParentTop="true" 17 android:layout_width="wrap_content" 18 android:layout_height="wrap_content" 19 android:textSize="30dp" 20 android:textColor="@color/colorBlue" 21 android:layout_margin="3dp" 22 android:text="@string/nine_tip"/> 23 <TextView 24 android:id="@+id/tv_center" 25 android:text="@string/center" 26 android:textSize="30dp" 27 android:layout_margin="3dp" 28 android:onClick="open" 29 android:textColor="@color/colorRed" 30 android:layout_centerInParent="true" 31 android:layout_width="wrap_content" 32 android:layout_height="wrap_content"/> 33 <TextView 34 android:id="@+id/tv_east" 35 android:text="@string/east" 36 android:textSize="30dp" 37 android:layout_margin="3dp" 38 android:textColor="@color/colorRed" 39 android:layout_alignParentLeft="true" 40 android:layout_centerVertical="true" 41 android:layout_width="wrap_content" 42 android:layout_height="wrap_content"/> 43 <TextView 44 android:id="@+id/tv_west" 45 android:text="@string/west" 46 android:textSize="30dp" 47 android:layout_margin="3dp" 48 android:textColor="@color/colorRed" 49 android:layout_alignParentRight="true" 50 android:layout_centerVertical="true" 51 android:layout_width="wrap_content" 52 android:layout_height="wrap_content"/> 53 <TextView 54 android:id="@+id/tv_north" 55 android:text="@string/north" 56 android:textSize="30dp" 57 android:layout_margin="3dp" 58 android:textColor="@color/colorRed" 59 android:layout_alignParentBottom="true" 60 android:layout_centerHorizontal="true" 61 android:layout_width="wrap_content" 62 android:layout_height="wrap_content"/> 63 <TextView 64 android:id="@+id/tv_south" 65 android:text="@string/south" 66 android:textSize="30dp" 67 android:layout_margin="3dp" 68 android:textColor="@color/colorRed" 69 android:layout_below="@id/tv_title" 70 android:layout_centerHorizontal="true" 71 android:layout_width="wrap_content" 72 android:layout_height="wrap_content"/> 73 <TextView 74 android:id="@+id/tv_east_south" 75 android:text="@string/east_south" 76 android:textSize="30dp" 77 android:layout_margin="3dp" 78 android:textColor="@color/colorRed" 79 android:layout_below="@id/tv_title" 80 android:layout_alignParentLeft="true" 81 android:layout_width="wrap_content" 82 android:layout_height="wrap_content"/> 83 <TextView 84 android:id="@+id/tv_west_south" 85 android:text="@string/west_south" 86 android:textSize="30dp" 87 android:layout_margin="3dp" 88 android:textColor="@color/colorRed" 89 android:layout_below="@id/tv_title" 90 android:layout_alignParentRight="true" 91 android:layout_width="wrap_content" 92 android:layout_height="wrap_content"/> 93 <TextView 94 android:id="@+id/tv_east_north" 95 android:text="@string/east_north" 96 android:textSize="30dp" 97 android:layout_margin="3dp" 98 android:textColor="@color/colorRed" 99 android:layout_alignParentBottom="true" 100 android:layout_width="wrap_content" 101 android:layout_height="wrap_content"/> 102 <TextView 103 android:id="@+id/tv_west_north" 104 android:text="@string/west_north" 105 android:textSize="30dp" 106 android:layout_margin="3dp" 107 android:textColor="@color/colorRed" 108 android:layout_alignParentBottom="true" 109 android:layout_alignParentRight="true" 110 android:layout_width="wrap_content" 111 android:layout_height="wrap_content"/> 112 <TextView 113 android:id="@+id/tv_xun" 114 android:text="@string/xun" 115 android:textSize="30dp" 116 android:layout_margin="3dp" 117 android:textColor="@color/colorGreen" 118 android:layout_below="@id/tv_east_south" 119 android:layout_width="wrap_content" 120 android:layout_height="wrap_content"/> 121 <TextView 122 android:id="@+id/tv_li" 123 android:text="@string/li" 124 android:textSize="30dp" 125 android:layout_margin="3dp" 126 android:textColor="@color/colorGreen" 127 android:layout_below="@id/tv_south" 128 android:layout_centerHorizontal="true" 129 android:layout_width="wrap_content" 130 android:layout_height="wrap_content"/> 131 <TextView 132 android:id="@+id/tv_kun" 133 android:text="@string/kun" 134 android:textSize="30dp" 135 android:layout_margin="3dp" 136 android:textColor="@color/colorGreen" 137 android:layout_below="@id/tv_west_south" 138 android:layout_alignParentRight="true" 139 android:layout_width="wrap_content" 140 android:layout_height="wrap_content"/> 141 <TextView 142 android:id="@+id/tv_zen" 143 android:text="@string/zen" 144 android:textSize="30dp" 145 android:layout_margin="3dp" 146 android:textColor="@color/colorGreen" 147 android:layout_toRightOf="@id/tv_east" 148 android:layout_centerVertical="true" 149 android:layout_width="wrap_content" 150 android:layout_height="wrap_content"/> 151 <TextView 152 android:id="@+id/tv_dui" 153 android:text="@string/dui" 154 android:textSize="30dp" 155 android:layout_margin="3dp" 156 android:textColor="@color/colorGreen" 157 android:layout_toLeftOf="@id/tv_west" 158 android:layout_centerVertical="true" 159 android:layout_width="wrap_content" 160 android:layout_height="wrap_content"/> 161 <TextView 162 android:id="@+id/tv_gen" 163 android:text="@string/gen" 164 android:textSize="30dp" 165 android:layout_margin="3dp" 166 android:textColor="@color/colorGreen" 167 android:layout_above="@id/tv_east_north" 168 android:layout_width="wrap_content" 169 android:layout_height="wrap_content"/> 170 <TextView 171 android:id="@+id/tv_kan" 172 android:text="@string/kan" 173 android:textSize="30dp" 174 android:layout_margin="3dp" 175 android:layout_above="@id/tv_north" 176 android:textColor="@color/colorGreen" 177 android:layout_centerHorizontal="true" 178 android:layout_width="wrap_content" 179 android:layout_height="wrap_content"/> 180 <TextView 181 android:id="@+id/tv_qan" 182 android:text="@string/qan" 183 android:textSize="30dp" 184 android:layout_margin="3dp" 185 android:textColor="@color/colorGreen" 186 android:layout_above="@id/tv_west_north" 187 android:layout_alignRight="@id/tv_west_north" 188 android:layout_width="wrap_content" 189 android:layout_height="wrap_content"/> 190 <TextView 191 android:id="@+id/tv_mu" 192 android:text="@string/mu" 193 android:textSize="30dp" 194 android:layout_margin="3dp" 195 android:textColor="@color/colorBlue" 196 android:layout_below="@id/tv_xun" 197 android:layout_width="wrap_content" 198 android:layout_height="wrap_content"/> 199 <TextView 200 android:id="@+id/tv_huo" 201 android:text="@string/huo" 202 android:textSize="30dp" 203 android:layout_margin="3dp" 204 android:textColor="@color/colorBlue" 205 android:layout_below="@id/tv_li" 206 android:layout_centerHorizontal="true" 207 android:layout_width="wrap_content" 208 android:layout_height="wrap_content"/> 209 <TextView 210 android:id="@+id/tv_tu" 211 android:text="@string/tu" 212 android:textSize="30dp" 213 android:layout_margin="3dp" 214 android:textColor="@color/colorBlue" 215 android:layout_below="@id/tv_kun" 216 android:layout_alignParentRight="true" 217 android:layout_width="wrap_content" 218 android:layout_height="wrap_content"/> 219 <TextView 220 android:id="@+id/tv_mu2" 221 android:text="@string/mu" 222 android:textSize="30dp" 223 android:layout_margin="3dp" 224 android:textColor="@color/colorBlue" 225 android:layout_below="@id/tv_zen" 226 android:layout_alignLeft="@id/tv_zen" 227 android:layout_width="wrap_content" 228 android:layout_height="wrap_content"/> 229 <TextView 230 android:id="@+id/tv_tu2" 231 android:text="@string/tu" 232 android:textSize="30dp" 233 android:layout_margin="3dp" 234 android:textColor="@color/colorBlue" 235 android:layout_below="@id/tv_center" 236 android:layout_alignLeft="@id/tv_center" 237 android:layout_width="wrap_content" 238 android:layout_height="wrap_content"/> 239 <TextView 240 android:id="@+id/tv_jin" 241 android:text="@string/jin" 242 android:textSize="30dp" 243 android:textColor="@color/colorBlue" 244 android:layout_margin="3dp" 245 android:layout_below="@id/tv_dui" 246 android:layout_alignLeft="@id/tv_dui" 247 android:layout_width="wrap_content" 248 android:layout_height="wrap_content"/> 249 <TextView 250 android:id="@+id/tv_tu3" 251 android:text="@string/tu" 252 android:textSize="30dp" 253