u010248089的专栏

为了适应各式各样的界面风格,Android系统提供了5种布局,这5种布局分别是:LinearLayout(线性布局)TableLayout(表格布局)RelativeLayout(相对布局)AbsoluteLayout(绝对布局)FrameLayout(框架布局)利用这五种布局,可以在屏幕上将控件随心所欲的摆放,而且控件的大小和位置会随着屏幕大小的变化作出相应的调整。下面是这五个布局在View的继承体系中的关系:

一,LinearLayout(线性布局) 在一个方向上(垂直或水平)对齐所有子元素一个垂直列表每行将只有一个子元素(无论它们有多宽)一个水平列表只是一列的高度(最高子元素的高度来填充)下面是一个简单的线性布局的例子:

01 <?xml version="1.0" encoding="utf-8"?> 02 <LinearLayout 03 xmlns:android="" 04 android:layout_width="match_parent" 05 android:layout_height="match_parent" android:orientation="vertical"> 06 <EditText android:text="EditText" 07 08 android:id="@+id/editText1" 09 10 android:layout_height="wrap_content" 11 12 android:layout_width="fill_parent"> 13 14 </EditText> 15 <LinearLayout android:id="@+id/linearLayout1" 16 17 android:layout_height="fill_parent" 18 19 android:layout_width="fill_parent" 20 21 android:gravity="right"> 22 <Button android:id="@+id/button2" 23 24 android:text="Button" 25 26 android:layout_width="wrap_content" 27 28 android:layout_height="wrap_content"></Button> 29 <Button android:text="Button" 30 31 android:id="@+id/button1" 32 33 android:layout_width="wrap_content" 34 35 android:layout_height="wrap_content"></Button> 36 </LinearLayout> 37 </LinearLayout>

最外层布局为垂直线性布局,宽度为整个屏幕(fill_parent),高度为刚好适合子控件(wrap_content)。然后依次添加一个EditText,一个水平布局的LinearLayout,在这个线性布局里面,,摆放两个Button,该线性布局的gravity属性设置为”right”,所以里面的两个Button靠右显示。二,TableLayout(表格布局)把子元素放入到行与列中不显示行、列或是单元格边界线单元格不能横跨行,如HTML中一样表格布局模型以行列的形式管理子控件,每一行为一个TableRow的对象,当然也可以是一个View的对象。TableRow可以添加子控件,每添加一个为一列。android:layout_colum官方解释:The index of the column in which this child should be,也即是设置该控件在TableRow中所处的列。android:layout_span官方解释:Defines how many columns this child should span,也即是设置该控件所跨越的列数。android:collapseColumns官方解释:The 0 based index of the columns to collapse. The column indices must be separated by a comma: 1, 2, 5.也即是将TableLayout里面指定的列隐藏,若有多列需要隐藏,请用逗号将需要隐藏的列序号隔开。android:stretchColumns官方解释:The 0 based index of the columns to stretch. The column indices must be separated by a comma: 1, 2, 5. You can stretch all columns by using the value “*” instead. Note that a column can be marked stretchable and shrinkable at the same time.也即是设置指定的列为可伸展的列,可伸展的列会尽量伸展以填满所有可用的空间,若有多列需要设置为可伸展,请用逗号将需要伸展的列序号隔开。android:shrinkColumns官方解释:The 0 based index of the columns to shrink. The column indices must be separated by a comma: 1, 2, 5. You can shrink all columns by using the value “*” instead. 设置指定的列为可收缩的列。当可收缩的列太宽以至于让其他列显示不全时,会纵向延伸空间。当需要设置多列为可收缩时,将列序号用逗号隔开。下面用一个例子简单说明TableLayout的用法:

01 <?xml version="1.0" encoding="utf-8"?> 02 <TableLayout xmlns:android="" 03 android:layout_width="fill_parent" 04 android:layout_height="fill_parent" 05 android:stretchColumns="1"> 06 <TableRow> 07 <TextView 08 android:layout_column="1" 09 android:padding="3dip" android:text="Row1"/> 10 <TextView 11 android:text="1" 12 android:gravity="right" 13 android:padding="3dip" /> 14 </TableRow> 15 <View 16 android:layout_height="2dip" 17 android:background="#FF909090" /> 18 <TableRow> 19 <TextView 20 android:text="*" 21 android:padding="3dip" /> 22 <TextView 23 android:text="Row12" 24 android:padding="3dip" /> 25 <TextView 26 android:text="2" 27 android:gravity="right" 28 android:padding="3dip" /> 29 </TableRow> 30 <View 31 android:layout_height="2dip" 32 android:background="#FF909090" /> 33 <TableRow> 34 <TextView 35 android:layout_column="1" 36 android:text="Row13" 37 android:padding="3dip" /> 38 </TableRow> 39 </TableLayout>

三、RelativeLayout(相对布局)相对布局的子控件会根据它们所设置的参照控件和参数进行相对布局。参照控件可以是父控件,也可以是其它子控件,但是被参照的控件必须要在参照它的控件之前定义。下面是一个简单的例子:

挫折其实就是迈向成功所应缴的学费。

u010248089的专栏

相关文章:

你感兴趣的文章:

标签云: