首页 > 代码库 > android 三种弹出框之一poprpWindow

android 三种弹出框之一poprpWindow

poprpWindow

  在android的弹出框我目前了解到的是有三种:AlertDialog,poprpWindow,Activity伪弹框,

  AlertDialog太熟悉了,这里就不介绍了

  就先看看poprpWindow

  API 给出的解释是:

  

  意思就是一个展示view的弹出窗体,这个弹出窗体将会浮动在当前activity的最上层,

  它和AlertDialog的区别是:在android中弹出框有两种方式:AlertDialog和PopupWindow,它们的不同点在于:
      1、AlertDialog的位置固定,而PopupWindow的位置可以随意;
      2、AlertDialog是非阻塞线程的,而PopupWindow是阻塞线程的

  下面就通过一个例子来说明PopupWindow的用法:

  Activity.class:

 1 public class MainActivity extends Activity {
 2 
 3     private Button btn;
 4 
 5     @Override
 6     protected void onCreate(Bundle savedInstanceState) {
 7         super.onCreate(savedInstanceState);
 8         setContentView(R.layout.activity_main);
 9         btn = (Button)findViewById(R.id.show);
10         btn.setOnClickListener(new Button.OnClickListener() {
11             
12             @Override
13             public void onClick(View v) {
14                 PopupWindow popupWindow = new PopupWindow(MainActivity.this);
15                 //这里是用在popupWindow中显示一个ListView, 你也可以加载一个xx.xml文件(Layoutfalter.from().inflate())
16                 ListView listView = new ListView(MainActivity.this);  
17                 ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_dropdown_item_1line, new String[]{"第一个" , "第二个"});
18                 listView.setAdapter(adapter);
19                 popupWindow.setContentView(listView);   //PopupWindow中要显示的view
20                 popupWindow.setHeight(500);
21                 popupWindow.setWidth(180);
22                 popupWindow.setOutsideTouchable(true);  //在PopupWindow范围外 默认为false
23                  popupWindow.setBackgroundDrawable(new ColorDrawable(Color.argb(50, 52, 53, 55)));
24                 /**
25                  * popupWindow.showAsDropDown(anchor, xoff, yoff)    用于标记Popupwindow要显示的在什么位置
26                  * anchor :至以那个view为标准位置
27                  * xoff :在 anchor为基准位置的x偏移量
28                  * yoff :在 anchor为基准位置的y偏移量
29                  */
30                 popupWindow.showAsDropDown(btn, 0, 0);
31                 
32             }
33         });
34         
35     }
36 
37     @Override
38     public boolean onCreateOptionsMenu(Menu menu) {
39         getMenuInflater().inflate(R.menu.main, menu);
40         return true;
41     }
42 
43 }

对应的xml文件就包含一个button就不贴出来了

源码下载:源码