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

<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;
			}
		}) ;
这个时候再点击就可以实现了。

至此,问题解决!



你可能感兴趣的:(android开发过程中出现的Popwindow问题)