您的位置:首页 > 移动开发 > Android开发

android开发过程中出现的Popwindow问题

2015-04-17 14:37 337 查看
<p>源代码如下:</p><div>
</div>
if (popupWindow != null && popupWindow.isShowing()) {
popupWindow.dismiss();
return ;
} else {
showPopWindow() ;
popupWindow.setOutsideTouchable(true);
//popupWindow.update() ;
}
private void showPopWindow() {
popupWindow = new PopupWindow(getContext());
popupWindow.setContentView(quick_lv);
// 设置popupWindow的宽高
popupWindow.setWidth(lin_loginfast.getWidth());
popupWindow.setHeight(200);

popupWindow.setBackgroundDrawable(getContext().getResources().getDrawable(R.drawable.background_popwindow));

popupWindow.showAsDropDown(lin_loginfast, 0, 0);
// 设置点击其他位置popupWindow消失
}
看我的代码可以知道我的目的其实就是单纯的想让popwindow在特定的条件下消失和显示而已,但是出现的状况是有的,

首先在关于popwindow.update()的状况:当不添加这个的时候在外面点击popwindow外消失的效果不能实现,添加的时候呢,点击按钮之后popwindow总是出现,消失不了,现在记住,我会在处理之后在后面添加解决方法.

我现在找到原因了 ,我们一般情况下判断popwindow的消失与否一般情况下是这样的:

if(popwindow !=null){//当popwindow不显示的时候一般情况下的popwindow是等于null的,而我刚才看了 在上面的代码之中很长时间的popwindow在消失之后还是不为空的。这是怎么回事呢?我们暂且不去管他只要直接在他的显示和消失的时候做个boolean类型的数据 flag就可以了。

但是这个时候问题又来了,这个时候点击popwindow外部区域popwindow不能消失了,这个怎么回事呢?

这个时候我们可以看到,因为我们的flag代替了popwindow !=null成为了判断条件,这个时候的popupWindow.setOutsideTouchable(true);
不能实现,这个时候需要做的是

在popupWindow.setOutsideTouchable(true); 下面添加以下的代码:
popupWindow.setFocusable(true) ;
popupWindow.setTouchable(true) ;
popupWindow.setTouchInterceptor(new OnTouchListener() {

@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
// TODO 自动生成的方法存根
popupWindow.dismiss() ;

return true;
}
}) ;
这个时候再点击就可以实现了。

至此,问题解决!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: