[译文]Linear Layout - Android SDK Tutorials系列
LinearLayout
是 ViewGroup
的一种,里面包含的View按线性方式排列,要么垂直方向,要么水平方向。
不要过度使用LinearLayout。如果你开始嵌套使用LinearLayout,那也许你应该考虑使用RelativeLayout了。
- 创建一个工程:HelloLinearLayout
- 打开
res/layout/main.xml
,修改内容如下:<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1"> <TextView android:text="red" android:gravity="center_horizontal" android:background="#aa0000" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1"/> <TextView android:text="green" android:gravity="center_horizontal" android:background="#00aa00" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1"/> <TextView android:text="blue" android:gravity="center_horizontal" android:background="#0000aa" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1"/> <TextView android:text="yellow" android:gravity="center_horizontal" android:background="#aaaa00" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1"/> </LinearLayout> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1"> <TextView android:text="row one" android:textSize="15pt" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"/> <TextView android:text="row two" android:textSize="15pt" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"/> <TextView android:text="row three" android:textSize="15pt" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"/> <TextView android:text="row four" android:textSize="15pt" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"/> </LinearLayout> </LinearLayout>
仔细查看这个XML,最外层是一个LinearLayout,它的android:orientation属性被设置为"vertical",意味着它包含的View(一共两个)按照垂直方向排列。它包含的第一个View是另一个LinearLayout,这个LinearLayout使用水平排列方式;包含的第二个LinearLayout使用垂直排列方式。两个内部的LinearLayout都包含了几个TextView,这些TextView都按照包含他们的LinearLayout规定的方式排列着。
- 现在打开
HelloLinearLayout.java
,确保它装载了res/layout/main.xml
布局文件,修改如下:public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); }
setContentView(int)
方法加载这个Activity的布局文件,资源ID —
R.layout.main
指向res/layout/main.xml
布局文件。 - 运行这个应用。
应该能看到下面的画面:
注意XML属性是如何设置每个View的显示方式的。试着修改android:layout_weight(layout_width/layout_height)的值,看看各个View是如何显示的。