android popupwindow showAsDropDown offsetx无效的问题

来源:互联网 发布:js的正则表达式中文 编辑:程序博客网 时间:2024/05/09 09:17

相信popupwindow大家也是经常使用的,这里就不用例子说明它的作用了,这里说一下各个方法的用法也顺便说下很多人遇上的所谓的offsetx不起作用的问题

View view = View.inflate(getActivity(), R.layout.add, null);
popupWindow = new PopupWindow(view, ViewGroup.LayoutParams.WRAP_CONTENT,
    ViewGroup.LayoutParams.WRAP_CONTENT);
popupWindow.setBackgroundDrawable(new BitmapDrawable());
popupWindow.setFocusable(true);//获得焦点,才能让View里的点击事件生效
if(popupWindow.isShowing()){popupWindow.dismiss();
}else {
popupWindow.showAsDropDown(imageView,-400,200);
//popupWindow.showAtLocation(imageView, Gravity.BOTTOM, 100, 100);
}

new popupwindow里的第一个参数是window里的view,也是就要显示的是哪个view,第二和第三个是设定pupopwindow的宽和高

setBackgroundDrawable里设了一个空的bitmapdrawable,因为如果要在点击popupwindow以外的地方要其消失 ,就要为其设一个背景,当前这里也可设你自己 想要的背景

popupWindow.showAsDropDown(imageView,-400,200);

anchor the view on which to pin the popup window
xoff A horizontal offset from the anchor in pixels
yoff A vertical offset from the anchor in pixels从官方的解析来说,第一个参数是绑定这个popupwindow的view,就是当点击那个view时显示和隐藏popupwindow,第二个参数是水平的偏移的像素,第三个参数是竖直的偏移的像素,就是要说明下了,这里二,三个参数都为零时是显示在左下角,但这个偏移是以水平时是以屏幕右边为基准,所以如果想要它显在view的左边,第二个参数可以设为负数。用这个方法无论水平偏移设多少,水平都不会越出屏幕

popupWindow.showAtLocation(imageView, Gravity.BOTTOM, 100, 100);显示在指定的位置,第二个参数为显示的位置,第三四个参数还是偏移的像素,第三四个像素的偏移和相对显示的是一样的。而用这种方法就固定只会显示在屏幕内,无论偏移量设为多大,只偏移到屏幕边缘为止

0 1
原创粉丝点击