PopupWindow就是一个可以显示在当前界面上的浮动容器,它可以用来显示任意一个View,同时还可以指定显示的位置。
下面写一个显示下拉的例子:
PopupWindow mpopupWindow;
private void showPop() {
// 要填充到PopupWindow里的View(自己写的随便的一个布局)
View view = View.inflate(context, R.layout.popup, null);
// 上面view中的ListView控件,因为是展示下拉效果,所以基本上都使用ListView或GridView
ListView lv = (ListView) view.findViewById(R.id.lv);
// lv的适配器(需要自己实现)
MyAdapter childAdapter = new MyAdapter();
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// 这里实现你的点击事件
if (mpopupWindow != null) {
mpopupWindow.dismiss();
}
}
});
lv.setAdapter(childAdapter);
if (mpopupWindow == null) {
mpopupWindow = new PopupWindow(context);
mpopupWindow
.setWidth(android.view.ViewGroup.LayoutParams.MATCH_PARENT);
mpopupWindow
.setHeight(android.view.ViewGroup.LayoutParams.WRAP_CONTENT);
mpopupWindow.setBackgroundDrawable(new BitmapDrawable());
mpopupWindow.setFocusable(true);
mpopupWindow.setOutsideTouchable(true);
mpopupWindow.setOnDismissListener(new OnDismissListener() {
@Override
public void onDismiss() {
// 消失时调整屏幕亮度
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.alpha = 1f;
getWindow().setAttributes(lp);
// PopupWindow消失时执行
}
});
}
// 显示pop同时让屏幕变暗
new Handler() {
}.postDelayed(new Runnable() {
@Override
public void run() {
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.alpha = 0.6f;
getWindow().setAttributes(lp);
}
}, 100);
mpopupWindow.setContentView(view);
mpopupWindow.showAsDropDown("这里是一个View,你想让这个PopupWindow显示在谁下面就写谁");
mpopupWindow.update();
}
代码不全,需要自己写一个xml布局和ListView适配器,但大致的使用方法就是这样。