popupwindow通过外部控件进行popupwindow间的切换


       最近有个项目,用到了popupwindow,还是在一个activity中用到了多个popupwindow,这就是涉及到popupwindow间的切换了。但每次弹出popupwindow后,想通过点击外部控件进行进行popupwindow间的切换,会发现点击外部控件的时候,只响应了隐藏当前popupwindow的事件,外部控件的点击事件并没有执行,需再次点击外部控件,才弹出popupwindow,这主要是焦点导致的,因为弹框焦点默认设置的是true,所以点击其他按钮,不会触发其他按钮对应的事件,因为焦点不在那个按钮上。所以只要设置成false就好了。

代码如下: 注意要在显示前加上popupWindow.setFocusable(false);设置不获取焦点

		PopupWindow popupWindow = new PopupWindow(popupWindow_view, 200,LayoutParams.MATCH_PARENT, true);
		popupWindow.setWidth(500);

		popupWindow.setFocusable(false); // 设置PopupWindow不获得焦点 


		int[] location = new int[2];
		// 这里是位置显示方式,在屏幕的左侧
		popupWindow.showAtLocation(view, Gravity.NO_GRAVITY,location[0] + view.getWidth(), location[1]);

		// 添加监听
		View popupWindow_view.setFocusableInTouchMode(true);

		popupWindow.setOutsideTouchable(true);
//						// 点击其他地方消失
		popupWindow_view.setOnTouchListener(new OnTouchListener() {
			public boolean onTouch(View v, MotionEvent event) {
								// TODO Auto-generated method stub
				if (popupWindow != null && popupWindow.isShowing()) {
					popupWindow.dismiss();
					popupWindow = null;
					}
					return false;
					}
			});
    这样,在点击外部控件时,会先关闭当前popupwindow再执行外部控件的点击事件,其实就是一个获取焦点的问题,并不像网上说的那么麻烦。


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值