使用PopupWindow
PopupWindow可以创建类似对话框风格的窗口,使用PopupWindow创建对话框风格的窗口只要如下两步即可:
- 调用PopupWindow的构造器创建PopupWindow对象。
- 调用PopupWindow的showAsDropDown(View v)将PopupWindow作为v组件的下拉组件显示出来;或调用PopupWindow的showAtLocation()方法将PopupWindow在指定位置显示出来。
下面的程序示范了如何使用PopupWindow创建对话框风格的窗口。该程序的主程序中只有一个简单的按钮,用户单击该按钮时将会显示PopupWindow;其中PopupWindow负责加载并显示前一个示例的窗口界面。
布局文件如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="center_horizontal" > <Button android:id="@+id/bn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="弹出Popup窗口"/> </LinearLayout>
后台Activity代码文件如下:
package org.crazyit.helloworld; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.PopupWindow; public class PopupWindowTest extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.popup_window_test); //装载R.layout.popup对应的界面布局 View root=this.getLayoutInflater().inflate(R.layout.popup, null); //创建PopupWindow对象 final PopupWindow popup=new PopupWindow(root,380,660); Button button=(Button)findViewById(R.id.bn); button.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub //以下拉方式显示 popup.showAsDropDown(v); } }); //获取PopupWindow的“关闭”按钮 root.findViewById(R.id.close).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub //关闭PopupWindow popup.dismiss(); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.popup_window_test, menu); return true; } }
上面代码中提到的R.layout.popup界面布局文件如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/close" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="关闭"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/shuangzi"/> </LinearLayout>
运行上面的程序将看到如下界面: