Android popupwindow 失去焦点或者点击空白区域时消失的解决方法
先来看下Android API 的这个Methods:
public void setOutsideTouchable (boolean touchable)
If the popup is showing, calling this method will take effect only the next time the popup is shown or through a manual call to one of the
update()
methods.
Parameters
touchable | true if the popup should receive outside touch events, false otherwise |
---|
就是说,基本通过这个属性和setFocusable(true);就能实现点击别的区域让popup消失,
也可以这样做,设置点击popup窗体自身,让其消失,通过下边的方法即root重写onTouch方法:
//点击窗体,PopupWindow消失 root.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { popup.dismiss(); return true; } });
同样, 可以不用重写root的onTouch方法,而该重写 Activity的onTouchEvent()方法,正常情况下也能实现popup消失.
@Override public boolean onTouchEvent(MotionEvent event) { if (popup != null && popup.isShowing()) { popup.dismiss(); popup= null; } return super.onTouchEvent(event); }
但是, 我遇到一个问题,就是上述的方法都解决不了, 是什么原因?
其实,罪魁祸首就是, popup的代码顺序, 手贱先调用了 showAsDropDown()方法,在设置其他属性,导致了这种情况.
showAsDropDown这个方法相当于 Dialog.show()方法, 如果是先show了, 然后其他属性即使是设置了,也起不到应有的作用.
这一点,经常提醒别人,没想到到popup这里我犯了同样的错误.
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。