在Android中,如何获取popupwindow的引用,popupwindow是定制HeaderBar的私有成员

在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

我使用第三方Android包,它定义了HeaderBar UI类。这个类有一个私有成员,它是一个弹出窗口


我想重置弹出窗口的宽度,但我无法从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));  
}
...
}

你能发一些代码吗?很抱歉。我可能无法发布代码。