Android开发系列(二十六):使用PopupWindow创建对话框风格的窗口

创建对话框风格的窗口很简单,需要步骤:

1、调用PopupWindow的构造器创建PopupWindow对象

2、调用PopupWindow的showAsDropDown(View v)作为v组件的下拉组件显示出来:或调用PopupWindow的showAtLocation()方法将PopupWindow在指定位置显示出来。


首先,我们创建一个Android项目,然后编辑main.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" 
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	android:gravity="center_horizontal">
<Button android:id="@+id/bn"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:text="弹出Popup窗口" 
	/>
</LinearLayout>
我们定义了一个按钮,用来打开Popup对话框风格的窗口


然后,我们在主界面编辑java代码:PopupWindowTest.java

import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.PopupWindow;


public class PopupWindowTest extends Activity
{
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		// 装载R.layout.popup对应的界面布局
		View root = this.getLayoutInflater().inflate(R.layout.popup, null);
		
		// 创建PopupWindow对象
		final PopupWindow popup = new PopupWindow(root, 280, 360);
		Button button = (Button) findViewById(R.id.bn);
		button.setOnClickListener(new OnClickListener()
		{
			@Override
			public void onClick(View v)
			{
				// 以下拉方式显示。
				//popup.showAsDropDown(v);
				//将PopupWindow显示在指定位置
				popup.showAtLocation(findViewById(R.id.bn), Gravity.CENTER, 20,
					20);
			}
		});
		// 获取PopupWindow中的关闭按钮。
		root.findViewById(R.id.close).setOnClickListener(
			new View.OnClickListener()
			{
				public void onClick(View v)
				{
					// 关闭PopupWindow
					popup.dismiss(); //负责销毁、隐藏PopupWindow的关键代码
				}
			});
	}
}


我们还写了一个PopupWindow对话框的xml文件:popup.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" 
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	android:gravity="center_horizontal"
	android:background="#B1C9E4"
	>
<ImageView 
	android:layout_width="240dp"
	android:layout_height="wrap_content"
	android:src="@drawable/java"
	/>
<Button
	android:id="@+id/close"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:text="关闭" 
	/>
</LinearLayout>



我们来看一下效果:






郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。