PopWindow 踩坑

showAtLocation(parent, gravity, x, y)方法使用

  • 方法含义:pop用于显示的位置及其偏移量
  • 参数含义:
    • parent :其所参考的父控件。
    • gravity : 相对于父控件的位置,类似于LinearLayoutgrivity属性。
  • x:x轴偏移量。
  • y: y轴偏移量
  • 剖析:该方法显示位置的控制类似于将子控件添加到LinearLayout中,通过grivity属性控制显示位置一样,但pop并不是添加到parent中,只是类似的位置显示模式。
  • 踩坑:
    • parentactivity的根节点,popwindow充满activity显示时,其Gravity的控制显示不在是参考parent而是参考手机当前的屏幕位置,及状态栏的位置也会显示同时会被状态栏遮挡。

    解决方案:
    通过设置popwindow的高度等于actiivity的高度,并且grivity的属性为Grivity.TOP,设置y轴偏移量为状态栏的高度。

     /**
     * 获取状态栏高度
     * 
     * @return
     */
    public static int getStatusHeight() {
        int result = 0;
        int resourceId = MDWApplication.getApplication().getResources()
                .getIdentifier("status_bar_height", "dimen", "android");
        if (resourceId > 0) {
            result = MDWApplication.getApplication().getResources()
                    .getDimensionPixelSize(resourceId);
        }
        return result;
    }

你可能感兴趣的:(PopWindow 踩坑)