一、相对布局(RelativeLayout)
相对布局指的是,组件的位置相对于父容器或兄弟组件的位置而定。
XML文件控制
下面的代码表示创建五个按钮分别放置四角和中心
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<!-- android:gravity="right"
android:ignoreGravity="@+id/b1" -->
<Button
android:id="@+id/b1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1"
/>
<Button
android:id="@+id/b2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="2"
/>
<Button
android:id="@+id/b3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/b1"
android:layout_centerInParent="true"
android:text="3"
/>
<Button
android:id="@+id/b4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/b3"
android:layout_alignParentRight="true"
android:text="4"
/>
<Button
android:id="@+id/b5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/b3"
android:text="5"
/>
</RelativeLayout>
java代码实现
//创建布局容器
RelativeLayout relativeLayout=new RelativeLayout(this);
//创建按钮
Button button=new Button(this);
button.setText("按钮1");
//设置按钮id
button.setId(1);
//设置组件宽度,高度
RelativeLayout.LayoutParams layoutParams=new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
//设置组件的相对位置
layoutParams.addRule(RelativeLayout.BELOW, button.getId());
Button button2=new Button(this);
button2.setText("按钮2");
button2.setLayoutParams(layoutParams);
relativeLayout.addView(button);
relativeLayout.addView(button2);
setContentView(relativeLayout);
二、网格布局(GridLayout)
网格布局是将页面分割成几行几列的空间
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnCount="3"列数
android:rowCount="3"行数
>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="0"在第0列(行数列数都是从0开始)
android:layout_row="0"在第0行
android:text="1"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="0"
android:layout_row="1"
android:text="2"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="2"
android:layout_row="1"
android:text="3"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="2"
android:layout_row="0"
android:text="4"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_row="0"
android:layout_rowSpan="2"合并两行
android:layout_gravity="fill"填充于父容器
android:text="5" />
</GridLayout>
java代码实现
//创建网格布局
GridLayout gridLayout=new GridLayout(this);
//设置行数列数
gridLayout.setRowCount(2);
gridLayout.setColumnCount(3);
//设置组件放的位置
GridLayout.Spec rowcount=GridLayout.spec(0);
GridLayout.Spec colcount=GridLayout.spec(0);
GridLayout.LayoutParams layoutParams=new GridLayout.LayoutParams(rowcount,colcount);
GridLayout.Spec rowcount1=GridLayout.spec(1);
GridLayout.Spec colcount1=GridLayout.spec(2);
GridLayout.LayoutParams layoutParams1=new GridLayout.LayoutParams(rowcount1,colcount1);
Button button=new Button(this);
button.setText("1");
button.setLayoutParams(layoutParams);
gridLayout.addView(button);
Button button1=new Button(this);
button1.setText("2");
button1.setLayoutParams(layoutParams1);
gridLayout.addView(button1);
setContentView(gridLayout);
三、绝对布局
通过坐标设定组件的位置
XML文件控制
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="100dp"
android:layout_y="200dp"
/>
</AbsoluteLayout>
java代码实现
AbsoluteLayout absoluteLayout=new AbsoluteLayout(this);
Button button=new Button(this);
button.setX(100.0f);
button.setY(200.0f);
absoluteLayout.addView(button);
setContentView(absoluteLayout);