popupwindow的isShowing() 始终为false

点击某个按钮出现popupwindow,点击监听的代码如下:

if (wPopupWindow.isShowing()){
      wPopupWindow.dismiss();
}else{
      wPopupWindow.showAsDropDown(layoutFiltrate,0,0);
}

我输出日志,Popuowindow的isShowing()始终显示为false。麻烦各位多多指教。

阅读 6.9k
2 个回答

你不应该是用PopupWindow的isShowing()方法作为展示和隐藏的开关,因为你如果一直没有调用showAsDropDown方法的话,isShowing()返回值一定是false。可以自定义一个临时boolean作为展示的开关,如boolean isPopShowing=false;然后通过isPopShowing=!isPopShowing的方法对显示状态进行重置

要么是你输出日志的地方不对,要么就是你wPopupWindow.showAsDropDown方法根本没调用过。

  /**
     * <p>Indicate whether this popup window is showing on screen.</p>
     *
     * @return true if the popup is showing, false otherwise
     */
    public boolean isShowing() {
        return mIsShowing;
    }
  public void showAsDropDown(View anchor, int xoff, int yoff, int gravity) {
    。。。

        mIsShowing = true;
    。。。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题