简单而言,我们使用各种layout布局类,来保存系统提供的小部件(widget)。Android使用基于XML文件的布局。
各种不同的布局
Android的布局类型主要有LinearLayout (线性布局), RelativeLayout (相对布局)和TableLayout (表格布局),以及使用ScrollView (可滚动视图)。布局是可以嵌套的。
LinearLayout
LinearLayout是继承自ViewGroup。ViewGroup有一个方法是addView(View child, ViewGroup.LayoutParams params),我们可以通过ViewGroup.LayoutParams这类,将一个View作为布局中的一个元素,动态添加到界面中去。
在使用LinearLayout时,可以采用以下几种属性来控制容器的内容:orientation, fill mode, weight,gravity,padding。下面分别来介绍。
orientation
指定布局中的部件的排列方式,是以行排列(horizontal),还是以列排列(vertical)。我们可以通过添加android:orientation属性来设置。Orientation的值可以在运行时,通过调用LinearLayout类的setOrientation()来设置,以调整排列顺序。
Fill Mode
一般来说,部件都需要设置宽度和高度。宽度和高度的值,称为填充。我们可以通过android:layout_width和android_height属性来设置。一般有以下三种数值:
- 具体的尺寸,比如125px,表示125像素
- wrap_content,表示采用该部件的自然大小
- fill_parent,表示该部件会从它的位置开始,填充布局的剩余空间。
后两种填充模式是常用的。因为它们是独立于屏幕尺寸的。
Weight
如果我们需要两个小部件来分摊布局的空间,就需要采用android:weight属性来对丁各个部件所占据的布局空间的比例。如果一个布局中只有两个部件,而你设置了两个部件的weight值是一样的,那么它们俩就会占据剩下空间的1/2。
Gravity
默认情况下,所有的部件都是左对齐和置顶的。如果你希望按照自己的方式来对其的话,就可以通过android:gravity属性或者调用方法setGravity()来设置。一般的数值有:left,center_horizontal,center_vertical, right等等
Padding
默认情况下,部件之间是紧紧相连的。如果你希望部件之间有些间距,那么可以通过设置属性android:padding或者调用方法setPadding()来完成。android:padding同时设置四个方向的值,如果只希望设置某一边的,可以选择android:paddingLeft,android:paddingRight,android:paddingTop,android:paddingBottom