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;
}