[转载]Android的UI布局总览 – 亚卓 – 博客园.
Android布局的目的是为了实现不同屏幕比例适配而设计的,有五种布局类:FrameLayout、LinearLayout、 AbsoluteLayout、RelativeLayout和TableLayout。五大布局类的继承关系如下(以FrameLayout为例):
java.lang.Object
android.view.View
android.view.ViewGroup
Android.widget.FrameLayout
一。FrameLayout简介
FrameLayout框架布局,在此布局下的所有对象都固定在屏幕的做上角显示,不能指定位置。最大的特点是可以添加多个子类通过Android:layout_gravity
来指定子类视图的位置。同一位置的子类视图处于层叠状,最上面的子类视图是最后添加的子类视图。
继承关系如下:
java.lang.Object
android.view.View
android.view.ViewGroup
android.widget.FrameLayout
它的子类:
AppWidgetHostView, CalendarView, DatePicker, GestureOverlayView, HorizontalScrollView, MediaController, ScrollView, TabHost, TimePicker, ViewAnimator
ImageSwitcher, TextSwitcher, ViewFlipper, ViewSwitcher
二。RelativeLayout简介
RelativeLayout相对布局,允许子元素指定他们相对于其他元素或者父元素的位置(通过ID指定),可以左右对齐,上下对齐,指定屏幕位置等形式来排列元素。
继承关系如下:
java.lang.Object
android.view.View
android.view.ViewGroup
android.widget.RelativeLayout
常用属性介绍:
android:layout_above
Positions the bottom edge of this view above the given anchor view ID.
android:layout_alignBaseline
Positions the baseline of this view on the baseline of the given anchor view ID.
android:layout_alignBottom
Makes the bottom edge of this view match the bottom edge of the given anchor view ID.
android:layout_alignLeft
Makes the left edge of this view match the left edge of the given anchor view ID.
android:layout_alignParentBottom
If true, makes the bottom edge of this view match the bottom edge of the parent.
android:layout_alignParentLeft
If true, makes the left edge of this view match the left edge of the parent.
android:layout_alignParentRight
If true, makes the right edge of this view match the right edge of the parent.
android:layout_alignParentTop
If true, makes the top edge of this view match the top edge of the parent.
android:layout_alignRight
Makes the right edge of this view match the right edge of the given anchor view ID.
android:layout_alignTop
Makes the top edge of this view match the top edge of the given anchor view ID.
android:layout_alignWithParentIfMissing
If set to true, the parent will be used as the anchor when the anchor cannot be be found for layout_toLeftOf, layout_toRightOf, etc.
android:layout_below
Positions the top edge of this view below the given anchor view ID.
android:layout_centerHorizontal
If true, centers this child horizontally within its parent.
android:layout_centerInParent
If true, centers this child horizontally and vertically within its parent.
android:layout_centerVertical
If true, centers this child vertically within its parent.
android:layout_toLeftOf
Positions the right edge of this view to the left of the given anchor view ID.
android:layout_toRightOf
Positions the left edge of this view to the right of the given anchor view ID.
三。LinearLayout简介
LinearLayout线性布局,线性布局是所有布局中最常用的,他可以让其中的子元素按垂直或水平的方式排列(通过排列的方向设置),通常复杂的布局都是在LinearLayout布局中嵌套而成的。
继承关系如下:
android.widget.LinearLayout
他的子类有:
NumberPicker, RadioGroup, SearchView, TabWidget, TableLayout, TableRow, ZoomControls
四。AbsoluteLayout简介
AbsoluteLayout绝对布局。指定了子元素的x/y坐标值,并显示在屏幕上。该布局没有屏幕边框,允许元素之间互相重叠,在实际中不提倡使用这种布局,因为固定了位置,所以在屏幕旋转式会有不完整。
继承关系如下:
android.view.View
android.view.ViewGroup
android.widget.AbsoluteLayout
他的子类有:
*************This class is deprecated.
Use FrameLayout
, RelativeLayout
or a custom layout instead.
五。TableLayout简介
TableLayout表格布局。将子元素的位置分配到行或列中,TableLayout布局有许多TableRow(行)组成,但没有列的概念,列是又 行中的控件数目来决定的,TableLayout也是常有布局。TableLayout不会显示行、列、单元格的边框线。
继承关系如下:
java.lang.Object
android.view.View
android.view.ViewGroup
android.widget.LinearLayout
android.widget.TableLayout
他的子类有:
android:collapseColumns
setColumnCollapsed(int,boolean)
The zero-based index of the columns to collapse.
android:shrinkColumns
setShrinkAllColumns(boolean)
The zero-based index of the columns to shrink.
android:stretchColumns
setStretchAllColumns(boolean)
The zero-based index of the columns to stretch.