FrameLayout帧布局,简单的说FrameLayout中的子元素总是以屏幕的左上角层叠在一起,但是,这里就存在了一个问题,如何让控件显示在屏幕的中间呢?
事实上,我们可以对子元素添加android:layout_gravity属性来设置他们的位置:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ImageView
android:id="@+id/image"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="center"
android:src="@drawable/ic_launcher"
/>
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textColor="#ff0000"
android:text="你好"
/>
</FrameLayout>
FrameLayout布局里面android:layout_margin的各种属性必须依赖于android:layout_gravity,简单的说,要想让margin生效,必须先设置View的layout_gravity属性。
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <LinearLayout android:layout_width="200dip" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="center" android:layout_gravity="center" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:text="FrameLayout测试" android:textSize="13sp" android:gravity="center" /> </LinearLayout> </FrameLayout>