admin 发表于 2018-1-11 10:06:22

Android7.0 7.1 popupwindow showAsDropDown 显示位置异常解决办法

    public static void showAsDropDown(PopupWindow pw, View anchor, int xoff, int yoff) {
      if (Build.VERSION.SDK_INT >= 24) {
            int[] location = new int;
            anchor.getLocationOnScreen(location);
            // 7.1 版本处理
            if (Build.VERSION.SDK_INT == 25) {
                //【note!】Gets the screen height without the virtual key
                WindowManager wm = (WindowManager) pw.getContentView().getContext().getSystemService(Context.WINDOW_SERVICE);
                int screenHeight = wm.getDefaultDisplay().getHeight();
                /*
                /*
               * PopupWindow height for match_parent,
               * will occupy the entire screen, it needs to do special treatment in Android 7.1
                */
                pw.setHeight(screenHeight - location - anchor.getHeight() - yoff);
            }
            pw.showAtLocation(anchor, Gravity.NO_GRAVITY, xoff, location + anchor.getHeight() + yoff);
      } else {
            pw.showAsDropDown(anchor, xoff, yoff);
      }
    }

页: [1]
查看完整版本: Android7.0 7.1 popupwindow showAsDropDown 显示位置异常解决办法