关于Android的PopupWindon
这篇文章主要介绍了PopupWindow在控件的各个方向上的显示(上、下、左、右),主要用到PopupWindow的showAtLocation()方法。
①.在控件上方、下方、左方、右方
布局中就放一个简单的按钮控件,居中,屏幕中间
//初始化控件
private void
init_Views() {
button
= (Button) findViewById(R.id.popup);
button.setOnClickListener(new
View.OnClickListener() {
@Override
public void
onClick(View v) {
//点击控件弹出窗口
popupWindwShowing(v);
}
});
}
//弹出窗口
private void
popupWindwShowing(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
=
new
PopupWindow(view,300,330);
}
//使其聚集
popupWindow.setFocusable(true);
//设置允许点击外部消失
popupWindow.setOutsideTouchable(true);
// 这个是为了点击“返回Back”也能使其消失,并且并不会影响你的背景
popupWindow.setBackgroundDrawable(new
BitmapDrawable());
//获得v在屏幕中的x 和 y坐标,记录在数组中
int[]
location = new int[2];
v.getLocationOnScreen(location);
WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
//坐标计算
int
pox = -(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]);
}
效果图:
正下方:
上方:
左方:
右方: