1.FrameLayout类简介
FrameLayout帧布局在屏幕上开辟出了一块区域,在这块区域中可以添加多个子控件,但是所有的子控件都被对齐到屏幕的左上角。帧布局的大小由子控件中尺寸最大的那个子控件来决定。如果子控件一样大,同一时刻只能看到最上面的子控件。
FrameLayout继承自ViewGroup,除了继承自父类的属性和方法,FrameLayout类中包含了自己特有的属性和方法,如下表所示。
属性名称 | 对应方法 | 描述 |
android:foreground | setForeground(Drawable) | 设置绘制在所有子控件之上的内容 |
android:foregroundGravity | setForegroundGravity(int) | 设置绘制在所有子控件之上内容的gravity属性 |
在FreamLayout中,子控件是通过栈来绘制的,所以后添加的子控件会被控制在上层。
2.帧布局案例
本节将通过一个案例对帧布局的用法进行说明,开发步骤如下。
1)新建一个项目Android_Sample_3_4。
2)打开其res/values目录下的strings.xml,在其中输入如下代码。
1: <?xml version="1.0" encoding="utf-8"?>
2: <resources>
3: <string name="app_name">FrameExample</string>
4: <string name="big">大的</string>
5: <string name="middle">中的</string>
6: <string name="small">小的</string>
7: </resources>
3)在项目res/values目录下新建一个colors.xml,在其中输入如下代码。
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<color name="red">#FF0000</color>
<color name="green">#00FF00</color>
<color name="blue">#0000FF</color>
<color name="white">#FFFFFF</color>
</resources>
4)打开项目res/layout目录下的main.xml文件,将其中已有的代码替换为如下代码。
1: <?xml version="1.0" encoding="utf-8"?>
2: <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
3: android:id="@+id/FrameLayout01"
4: android:layout_width="fill_parent"
5: android:layout_height="fill_parent"
6: android:background="@color/white" >
7:
8: <TextView
9: android:id="@+id/TextView01"
10: android:layout_width="wrap_content"
11: android:layout_height="wrap_content"
12: android:text="@string/big"
13: android:textColor="@color/green"
14: android:textSize="60dp" >
15: </TextView>
16:
17: <TextView
18: android:id="@+id/TextView02"
19: android:layout_width="wrap_content"
20: android:layout_height="wrap_content"
21: android:text="@string/middle"
22: android:textColor="@color/red"
23: android:textSize="40dp" >
24: </TextView>
25:
26: <TextView
27: android:id="@+id/TextView03"
28: android:layout_width="wrap_content"
29: android:layout_height="wrap_content"
30: android:text="@string/small"
31: android:textColor="@color/blue"
32: android:textSize="20dp" >
33: </TextView>
34:
35: </FrameLayout>
第2~6行声明了一个帧布局,并设置其在父控件中的显示方式及自身的背景颜色。
第8~15行声明了一个TextView控件,该控件id为TextView01,第14行定义了其显示内容的字号为60dp,第13行定义了所显示内容的字体颜色为绿色。
第17~24行声明了一个TextView控件,该控件id为TextView02,第23行定义了其显示内容的字号为40dp,第22行定义了所显示内容的字体颜色为红色。
第26~33行声明了一个TextView控件,该控件id为TextView03,第32行定义了其显示内容的字号为20dp,第31行定义了所显示内容的字体颜色为蓝色。
5)进行Activity部分的开发。打开程序的Activity文件 Android_Sample_3_4Activity.java ,在其中输入如下代码。默认情况不需要做修改。
1: package wyf.jc;
2:
3: import android.app.Activity;
4: import android.os.Bundle;
5:
6: public class Android_Sample_3_4Activity extends Activity {
8: public void onCreate(Bundle savedInstanceState) {
9: super.onCreate(savedInstanceState);
10: setContentView(R.layout.main);
7: @Override
11: }
12: }
完成了上述步骤的开发后,运行Android_Sample_3_4,其效果如下图所示。
在图中可以看到,程序运行时所有的子控件都自动地对齐到容器的左上角,由于子控件的TextView是按照字号从大到小排列的,所以字号小的在最上层。