showAtLocation(parent, gravity, x, y)方法使用
- 方法含义:pop用于显示的位置及其偏移量
- 参数含义:
-
parent:其所参考的父控件。 -
gravity: 相对于父控件的位置,类似于LinearLayout的grivity属性。
-
-
x:x轴偏移量。 -
y: y轴偏移量 - 剖析:该方法显示位置的控制类似于将子控件添加到
LinearLayout中,通过grivity属性控制显示位置一样,但pop并不是添加到parent中,只是类似的位置显示模式。 - 踩坑:
- 当
parent为activity的根节点,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;
}
