FrameLayout 布局,又叫帧布局,就是在屏幕上开辟一个区域以填充所有的组件,但是FrameLayout会将所有的组件都放在屏幕的左上角,而且所有的组件通过层叠的方式来进行显示,也就是说,他们都是从从上角处开始放,然后一个覆盖着一个的方式。
看看xml文件,我们只是把Linelayout换成了Framelayout其它都没变。如下:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView
android:id="@+id/myimg"
android:src="@drawable/mldn_3g"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<EditText
android:id="@+id/myinput"
android:text="请输入您的姓名..."
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/mybut"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="按我" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
</FrameLayout>
结果如下:
这里当然也可以想前面用代码的方式来进行布局,效果也一样,代码如下:
package com.andy.android.framelayout;
import android.app.Activity;
import android.os.Bundle;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ImageView;
public class FrameLayoutTestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FrameLayout layout = new FrameLayout(this); // 定义帧布局管理器
FrameLayout.LayoutParams layoutParam = new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.FILL_PARENT); // 定义布局管理器的参数
FrameLayout.LayoutParams viewParam = new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT); // 定义显示组件的参数
ImageView img = new ImageView(this); // 定义图片组件
img.setImageResource(R.drawable.mldn_3g); // 定义显示的图片
EditText edit = new EditText(this); // 定义文本输入组件
edit.setText("请输入您的姓名..."); // 设置显示的文字
Button but = new Button(this); // 定义按钮
but.setText("按我"); // 设置按钮的文字
layout.addView(img, viewParam); // 增加组件
layout.addView(edit, viewParam); // 增加组件
layout.addView(but, viewParam); // 增加组件
super.setContentView(layout, layoutParam); // 向屏幕上增加布局管理器
}
}