Android布局之FrameLayout
转:
FrameLayout:该布局container可以用来占有屏幕的某块区域来显示单一的对象,可以包含有多个widgets或者是container,但是所有被包含的widgets或者是container必须被固定到屏幕的左上角,并且一层覆盖一层,不能通过为一个widgets或者是container指定一个位置。Container所包含的widgets或者是container的队列是采用的堆栈的结构,最后加进来的widgets或者是container显示在最上面。所以后一个widgets或者是container将会直接覆盖在前一个widgets或者是container之上,把它们部份或全部挡住(除非后一个widgets或者是container是透明的,必须得到FrameLayout Container的允许)。
<?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" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/textview_first" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/textview_second" android:textColor="#0000FF" /> </FrameLayout>
<string name="textview_first">This is a first string.</string> <string name="textview_second">This is a second string.</string>
如下图,其中TextView textview_second是最后FrameLayout最后加入的,所以该TextView应该是覆盖整个屏幕的,TextView textview_first被其覆盖。如下图:
转:http://www.iteye.com/topic/1114402
FrameLayout:帧布局
最简单的一个布局对象。它被定制为你屏幕上的一个空白备用区域,之后你可以在其中填充一个单一对象 — 比如,一张你要发布的图片。所有的子元素将会固定在屏幕的左上角;你不能为FrameLayout中的一个子元素指定一个位置。但是你可以通过子控件自身控制其位置。后一个子元素将会直接在前一个子元素之上进行覆盖填充,把它们部份或全部挡住(除非后一个子元素是透明的)。此布局通常用于游戏或者处理一些画廊程序。如图:
<!-- 帧布局,所以子控件均显示在屏幕的左上角,层叠式排列。此布局无法控制子控件的大小与位置, 但是子控件自身可以控制其位置大小 --> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/bg" > <!-- 图片显示控件 并且在容器的右侧显示 --> <ImageView android:id="@+id/one_imageview" android:src="@drawable/one" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" /> <!-- 第二张图片显示在左侧底部 --> <ImageView android:id="@+id/two_imageview" android:src="@drawable/two" android:layout_width="wrap_content" android:layout_height="fill_parent" android:scaleType="fitEnd" /> </FrameLayout>
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
public class MainActivity extends Activity {
ImageView mOneImageView;
ImageView mTwoImageView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mOneImageView=(ImageView) findViewById(R.id.one_imageview);
mTwoImageView=(ImageView) findViewById(R.id.two_imageview);
//添加点击监听事件
mOneImageView.setOnClickListener(new ImageView.OnClickListener(){
@Override
public void onClick(View v) {
//点击one时隐藏自身 显示two
mTwoImageView.setVisibility(View.VISIBLE);
v.setVisibility(View.GONE);
}
});
mTwoImageView.setOnClickListener(new ImageView.OnClickListener(){
@Override
public void onClick(View v) {
mOneImageView.setVisibility(View.VISIBLE);
v.setVisibility(View.GONE);
}
});
}
}