在Android中,如何获取popupwindow的引用,popupwindow是定制HeaderBar的私有成员
我使用第三方Android包,它定义了HeaderBar UI类。这个类有一个私有成员,它是一个弹出窗口在Android中,如何获取popupwindow的引用,popupwindow是定制HeaderBar的私有成员,android,android-popupwindow,Android,Android Popupwindow,我使用第三方Android包,它定义了HeaderBar UI类。这个类有一个私有成员,它是一个弹出窗口 我想重置弹出窗口的宽度,但我无法从HeaderBar实例获取弹出窗口的引用。有什么方法可以从Android的视图层次结构中获取它的引用吗?我最终使用java反射来获取弹出窗口的引用,即使它是私有的 class MyHeaderBar extends HeaderBar { private int defaultWidth = 0; ... private PopupWindow getPop
我想重置弹出窗口的宽度,但我无法从HeaderBar实例获取弹出窗口的引用。有什么方法可以从Android的视图层次结构中获取它的引用吗?我最终使用java反射来获取弹出窗口的引用,即使它是私有的
class MyHeaderBar extends HeaderBar {
private int defaultWidth = 0;
...
private PopupWindow getPopupWindow() {
try{
Field field = HeaderBar.class.getDeclaredField("mPopupWindow");
field.setAccessible(true);
Object value = field.get(this);
field.setAccessible(false);
if (value != null && PopupWindow.class.isAssignableFrom(value.getClass())) {
return (PopupWindow) value;
}
} catch (NoSuchFieldException e) {
} catch (IllegalAccessException e) {}
return null;
}
@Override
public vod showPopupWindow() {
super.showPopupWindow();
PopupWindow pw = getPopupWindow();
if (defaultWidth == 0)
defaultWidth = pw.getWidth();
pw.setFixedWidth((int)(defaultWidth * 1.15));
}
...
}
你能发一些代码吗?很抱歉。我可能无法发布代码。