我正在显示提供锚视图的ListPopupWindow。我需要针对锚视图显示ListPopupWindow的不同位置的不同内容。
例如,如果ListPopupWindow显示上面的锚点视图,如果ListPopupWindow显示在锚点视图下方,则其内容将不同且内容不同。
我的问题是如何检测ListPopupWindow的垂直位置?无论是在锚视图的上方还是下方。 在此先感谢!!!
答案 0 :(得分:0)
ListPopupWindow将PopupWindow作为默认成员,因此无法在程序包外部访问它。所以你应该使用反射。
创建一个扩展类并在ctor中使用此代码
try {
Field f = ListPopupWindow.class.getDeclaredField("mPopup");
if (f != null) {
f.setAccessible(true);
Object obj = f.get(this);
if (obj != null) {
mSuperPopup = (PopupWindow) obj;
}
}
} catch (Exception e) {
Log.e(TAG, e.getMessage());
}
private PopupWindow mSuperPopup = null;
public boolean isAboveAnchor() {
if (mSuperPopup != null)
return mSuperPopup.isAboveAnchor();
return false;
}