关于Android的PopupWindon

来源:互联网 发布:软件安全测试方法 编辑:程序博客网 时间:2024/06/05 02:51
这篇文章主要介绍了PopupWindow在控件的各个方向上的显示(上、下、左、右),主要用到PopupWindow的showAtLocation()方法。

①.在控件上方、下方、左方、右方

布局中就放一个简单的按钮控件,居中,屏幕中间

//初始化控件
private voidinit_Views() {
button= (Button) findViewById(R.id.popup);
button.setOnClickListener(newView.OnClickListener() {
@Override
public voidonClick(View v) {
//点击控件弹出窗口
popupWindwShowing(v);
}
});
}


//弹出窗口
private voidpopupWindwShowing(View v) {

if(popupWindow== null){

//初始化布局填充器
LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//弹窗的布局
view= layoutInflater.inflate(R.layout.popupwindow,null);
//popup初始化 参数:pop显示的view,pop的宽度,pop的高度
popupWindow= newPopupWindow(view,300,330);
}

//使其聚集
popupWindow.setFocusable(true);
//设置允许点击外部消失
popupWindow.setOutsideTouchable(true);
// 这个是为了点击“返回Back”也能使其消失,并且并不会影响你的背景
popupWindow.setBackgroundDrawable(newBitmapDrawable());

//获得v在屏幕中的x 和 y坐标,记录在数组中
int[] location = new int[2];
v.getLocationOnScreen(location);

WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);

//坐标计算
intpox = -(popupWindow.getWidth()/2-button.getWidth()/2);

//正下方 参数:点击的控件,偏离控件左下角点
// popupWindow.showAsDropDown(v,pox,0);

//上方
// popupWindow.showAtLocation(v, Gravity.NO_GRAVITY, location[0], location[1]-popupWindow.getHeight());

//左边
// popupWindow.showAtLocation(v, Gravity.NO_GRAVITY, location[0]-popupWindow.getWidth(), location[1]);

//右边
popupWindow.showAtLocation(v, Gravity.NO_GRAVITY, location[0]+v.getWidth(), location[1]);
}

效果图:
正下方:

上方:

左方:

右方: