继承关系图:
布局XML文件中常用属性:android:layout_width 宽度 android:layout_height 高度 可能的取值为match_parent,wrap_content或者固定的像素值。android:orientation 方向 可能的取值为 horizontal水平 vertical 垂直android:gravity 用来确定View中的控件在View中的停靠位置。 android:layout_gravity 用来确定View在其父控件中的停靠位置android:padding padding是控件中的内容相对控件的边缘的边距.android:layout_margin layout_margin是控件边缘相对父空间的边距
android:baselineAligned
该属性设置为false,将会阻止该布局管理器与它的子元素的基线对齐
android:divider
设置垂直布局时两个组件之间的分隔条
一.LinearLayout线性布局
水平方向:
输出结果:
垂直方向:
输出结果:
二.FrameLayout单帧布局
输出结果:
三.RelativeLayout相对布局
android:layout_centerInParent 定义组件在父容器中间
android:layout_centerVertical
定义组件在父容器垂直居中
android:layout_centerHorizontal
定义组件在父容器水平居中
android:layout_alignParentBottom
定义组件与父容器下对齐
(上对齐,左对齐,右对齐略) android:layout_above 定义在组件的上方 android:layout_below 定义在组件的下方 android:layout_toLeftOf 定义在组件的左边 android:layout_toRightOf 定义在组件的右边
android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐 (下对齐,右对齐,左对齐略 ...)
输出结果:
四.TableLayout表格布局
输出结果:
五.GridLayout九宫格布局(Android4.0加入)
android:rowCount 定义总行数 android:columnCount 定义总列数
用一个计算器界面的例子来演示:
package com.light.study.android;import android.app.Activity;import android.os.Bundle;import android.view.Gravity;import android.widget.Button;import android.widget.GridLayout;public class MainActivity extends Activity { GridLayout gridLayout; // 定义16个按钮的文本 String[] chars = new String[] { "7" , "8" , "9" , "÷", "4" , "5" , "6" , "×", "1" , "2" , "3" , "-", "." , "0" , "=" , "+" }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); gridLayout = (GridLayout) findViewById(R.id.root); for(int i = 0 ; i < chars.length ; i++) { Button bn = new Button(this); bn.setText(chars[i]); // 设置该按钮的字体大小 bn.setTextSize(40); // 指定该组件所在的行 GridLayout.Spec rowSpec = GridLayout.spec(i / 4 + 2); // 指定该组件所在列 GridLayout.Spec columnSpec = GridLayout.spec(i % 4); GridLayout.LayoutParams params = new GridLayout.LayoutParams( rowSpec , columnSpec); // 指定该组件占满父容器 params.setGravity(Gravity.FILL); gridLayout.addView(bn , params); } }}
输出结果: