線性布局在xml文件中使用<LinearLayout>來定義。
線性布局可以分為水平和垂直方向的布局,可以通過android:orientation來定義方向,android:orientation=“horizontal”表示水平方向,android:orientation=“vertical”表示垂直方向。
android:layout_width表示控件的寬度,android_layout_height表示控件的高度,其屬性值有wrap_content、fill_parent、match_parent三種。其中,wrap_content表示填滿父控件的空白,fill_parent表示大小剛好足夠顯示當前控件里的內容,match_parent與fill_parent作用是相同的。
android:layout_weight表示控件的權重,描述了控件所占的比例有多大。所有的視圖都有layout_weight值,其默認為零,表示需要顯示多大的視圖就占據多大的屏幕空間。若賦一個高於零的值,則將父視圖中的可用空間分割,分割大小具體取決於每一個視圖的layout_weight值以及該值在當前屏幕布局的整體layout_weight值和在其它視圖屏幕布局的layout_weight值中所占的比率而定。
下面是一個使用線性布局的實例。activity_main.xml源碼如下:

1 <LinearLayout 2 xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" 4 android:background="#FFFFFF" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" > 7 8 <!-- 最上面的輸入框 --> 9 <LinearLayout 10 android:orientation="horizontal" 11 android:background="#FFFFFF" 12 android:layout_width="match_parent" 13 android:layout_height="wrap_content" > 14 15 <EditText 16 android:id="@+id/mEditText" 17 android:inputType="number" 18 android:layout_width="match_parent" 19 android:layout_height="wrap_content" > 20 </EditText> 21 22 </LinearLayout> 23 24 <!-- 第一排的四個按鍵 --> 25 <LinearLayout 26 android:orientation="horizontal" 27 android:background="#FFFFFF" 28 android:layout_width="match_parent" 29 android:layout_height="wrap_content" > 30 31 <Button 32 android:id="@+id/mButton_mc" 33 android:text="@string/mc" 34 android:layout_weight="1" 35 android:layout_width="0dip" 36 android:layout_height="wrap_content" > 37 </Button> 38 39 <Button 40 android:id="@+id/mButton_mPlus" 41 android:text="@string/mPlus" 42 android:layout_weight="1" 43 android:layout_width="0dip" 44 android:layout_height="wrap_content" > 45 </Button> 46 47 <Button 48 android:id="@+id/mButton_mMinus" 49 android:text="@string/mMinus" 50 android:layout_weight="1" 51 android:layout_width="0dip" 52 android:layout_height="wrap_content" > 53 </Button> 54 55 <Button 56 android:id="@+id/mButton_mr" 57 android:text="@string/mr" 58 android:layout_weight="1" 59 android:layout_width="0dip" 60 android:layout_height="wrap_content" > 61 </Button> 62 63 </LinearLayout> 64 65 <!-- 第二排的四個按鍵 --> 66 <LinearLayout 67 android:orientation="horizontal" 68 android:background="#FFFFFF" 69 android:layout_width="match_parent" 70 android:layout_height="wrap_content" > 71 72 <Button 73 android:id="@+id/mButton_C" 74 android:text="@string/C" 75 android:layout_weight="1" 76 android:layout_width="0dip" 77 android:layout_height="wrap_content" > 78 </Button> 79 80 <Button 81 android:id="@+id/mButton_PlusAndMinusLog" 82 android:text="@string/PlusAndMinusLog" 83 android:layout_weight="1" 84 android:layout_width="0dip" 85 android:layout_height="wrap_content" > 86 </Button> 87 88 <Button 89 android:id="@+id/mButton_DivisionLog" 90 android:text="@string/DivisionLog" 91 android:layout_weight="1" 92 android:layout_width="0dip" 93 android:layout_height="wrap_content" > 94 </Button> 95 96 <Button 97 android:id="@+id/mButton_MultiplicationLog" 98 android:text="@string/MultiplicationLog" 99 android:layout_weight="1" 100 android:layout_width="0dip" 101 android:layout_height="wrap_content" > 102 </Button> 103 104 </LinearLayout> 105 106 <!-- 第三排的四個按鍵 --> 107 <LinearLayout 108 android:orientation="horizontal" 109 android:background="#FFFFFF" 110 android:layout_width="match_parent" 111 android:layout_height="wrap_content" > 112 113 <Button 114 android:id="@+id/mButton_Number7" 115 android:text="@string/Number7" 116 android:layout_weight="1" 117 android:layout_width="0dip" 118 android:layout_height="wrap_content" > 119 </Button> 120 121 <Button 122 android:id="@+id/mButton_Number8" 123 android:text="@string/Number8" 124 android:layout_weight="1" 125 android:layout_width="0dip" 126 android:layout_height="wrap_content" > 127 </Button> 128 129 <Button 130 android:id="@+id/mButton_Number9" 131 android:text="@string/Number9" 132 android:layout_weight="1" 133 android:layout_width="0dip" 134 android:layout_height="wrap_content" > 135 </Button> 136 137 <Button 138 android:id="@+id/mButton_SubtractionLog" 139 android:text="@string/SubtractionLog" 140 android:layout_weight="1" 141 android:layout_width="0dip" 142 android:layout_height="wrap_content" > 143 </Button> 144 145 </LinearLayout> 146 147 <!-- 第四排的四個按鍵 --> 148 <LinearLayout 149 android:orientation="horizontal" 150 android:background="#FFFFFF" 151 android:layout_width="match_parent" 152 android:layout_height="wrap_content" > 153 154 <Button 155 android:id="@+id/mButton_Number4" 156 android:text="@string/Number4" 157 android:layout_weight="1" 158 android:layout_width="0dip" 159 android:layout_height="wrap_content" > 160 </Button> 161 162 <Button 163 android:id="@+id/mButton_Number5" 164 android:text="@string/Number5" 165 android:layout_weight="1" 166 android:layout_width="0dip" 167 android:layout_height="wrap_content" > 168 </Button> 169 170 <Button 171 android:id="@+id/mButton_Number6" 172 android:text="@string/Number6" 173 android:layout_weight="1" 174 android:layout_width="0dip" 175 android:layout_height="wrap_content" > 176 </Button> 177 178 <Button 179 android:id="@+id/mButton_AdditionLog" 180 android:text="@string/AdditionLog" 181 android:layout_weight="1" 182 android:layout_width="0dip" 183 android:layout_height="wrap_content" > 184 </Button> 185 186 </LinearLayout> 187 188 <!-- 最后兩排的六個按鍵 --> 189 <LinearLayout 190 android:orientation="horizontal" 191 android:background="#FFFFFF" 192 android:baselineAligned="false" 193 android:layout_width="match_parent" 194 android:layout_height="wrap_content" > 195 196 <!-- 右下角等號左邊的五個按鈕 --> 197 <LinearLayout 198 android:orientation="vertical" 199 android:background="#FFFFFF" 200 android:layout_weight="3" 201 android:layout_width="0dip" 202 android:layout_height="wrap_content" > 203 204 <!-- 左下角的1、2、3三個按鈕 --> 205 <LinearLayout 206 android:orientation="horizontal" 207 android:background="#FFFFFF" 208 android:layout_width="match_parent" 209 android:layout_height="wrap_content" > 210 211 <Button 212 android:id="@+id/mButton_Number1" 213 android:text="@string/Number1" 214 android:layout_weight="1" 215 android:layout_width="0dip" 216 android:layout_height="wrap_content" > 217 </Button> 218 219 <Button 220 android:id="@+id/mButton_Number2" 221 android:text="@string/Number2" 222 android:layout_weight="1" 223 android:layout_width="0dip" 224 android:layout_height="wrap_content" > 225 </Button> 226 227 <Button 228 android:id="@+id/mButton_Number3" 229 android:text="@string/Number3" 230 android:layout_weight="1" 231 android:layout_width="0dip" 232 android:layout_height="wrap_content" > 233 </Button> 234 235 </LinearLayout> 236 237 <!-- 左下角的0和。兩個按鈕 --> 238 <LinearLayout 239 android:orientation="horizontal" 240 android:background="#FFFFFF" 241 android:layout_width="match_parent" 242 android:layout_height="wrap_content" > 243 244 <Button 245 android:id="@+id/mButton_Number0" 246 android:text="@string/Number0" 247 android:layout_weight="2" 248 android:layout_width="0dip" 249 android:layout_height="wrap_content" > 250 </Button> 251 252 <Button 253 android:id="@+id/mButton_Point" 254 android:text="@string/Point" 255 android:layout_weight="1" 256 android:layout_width="0dip" 257 android:layout_height="wrap_content" > 258 </Button> 259 260 </LinearLayout> 261 262 </LinearLayout> 263 264 <!-- 右下角的等號 --> 265 <LinearLayout 266 android:background="#FFFFFF" 267 android:layout_weight="1" 268 android:layout_width="0dip" 269 android:layout_height="match_parent" > 270 271 <Button 272 android:id="@+id/mButton_EqualLog" 273 android:text="@string/EqualLog" 274 android:layout_width="match_parent" 275 android:layout_height="match_parent" > 276 </Button> 277 </LinearLayout> 278 279 </LinearLayout> 280 281 </LinearLayout>
效果圖如圖1所示:
圖1:Android_LinearLayout實例
activity_main.xml中的Button控件中的android:text定義了各個按鈕所顯示的文字,其中使用到的字符串全部都定義在res資源目錄下的String.xml文件中,其源碼如下:

1 <resources> 2 3 <string name="app_name">Android_LinearLayout</string> 4 <string name="hello_world">Hello world!</string> 5 <string name="menu_settings">Settings</string> 6 <string name="title_activity_main">MainActivity</string> 7 8 <string name="mc">mc</string> 9 <string name="mPlus">m+</string> 10 <string name="mMinus">m-</string> 11 <string name="mr">mr</string> 12 <string name="C">C</string> 13 <string name="PlusAndMinusLog">+/-</string> 14 <string name="DivisionLog">/</string> 15 <string name="MultiplicationLog">*</string> 16 <string name="Number7">7</string> 17 <string name="Number8">8</string> 18 <string name="Number9">9</string> 19 <string name="SubtractionLog">-</string> 20 <string name="Number4">4</string> 21 <string name="Number5">5</string> 22 <string name="Number6">6</string> 23 <string name="AdditionLog">+</string> 24 <string name="Number1">1</string> 25 <string name="Number2">2</string> 26 <string name="Number3">3</string> 27 <string name="Number0">0</string> 28 <string name="Point">.</string> 29 <string name="EqualLog">=</string> 30 31 </resources>