关于fragment下popupwindow点击外侧不能取消的且可点击外部控件的问题
3条回答 默认 最新
- Light2333 2016-08-29 02:44关注
之前被这个问题困扰了很久,百度了很多例子好多用了还是没效果,继续奋斗了好久才找到一个适合的方法,看有的还说可以重写OnTouchListener(),本人觉得太麻烦,就用了另外一种简单的方法,很简单照着改就好了,直接贴代码
//获取popupwindow布局文件
View contentview = LayoutInflater.from(getContext()).inflate(R.layout.mine_login_popupwindow,null);
//实例化popupwindow并设置popupwindow显示样式
final PopupWindow popupwindow =new PopupWindow(contentview,ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);
//在popupwindow显示之后使fragment上其他控件失去焦点,不可点击
popupwindow.setFocusable(true);
//设置popupwindow显示的位置
popupwindow.showAtLocation(contentview, Gravity.CENTER,0,0);
//设置点击popupwindow外的其他位置也可取消popupwindow
popupwindow.setOutsideTouchable(true);
//这是popupwindow的背景,这个是必须设置的且不能为null
popupwindow.setBackgroundDrawable(new BitmapDrawable());
//设置整个控件的触摸事件,并使popupwindow消失
contentview.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
popupwindow.dismiss();
return false;
}
});
就这么多了,这是我个人感觉最方便的一种方法,如果建议请留言~解决 3无用