2011-08-04 140 views
3

好的,所以我开始着手构建Android应用程序,至少在几天之后,程序员可以做到这一点 - 我为我迄今为止学到的东西感到自豪。PopupWindow的宽度和高度

无论如何,我想强制登录主要活动 - 这是我通过获取SharedPrefernece并检查该信息是否为null并获取包含“登录”字段和选项的PopupWindow。

这个PopupWindow里面有一个Flipper,这很好,当某些选项被选中时我工作的很好。

我有显示此PopupWindow问题,只是内容(WRAP_CONTENT),当我设置PopupWindow.setAtLocation()

现在的规模,这里是我一直在努力做的就是弹出窗口的大小 - 如在这里提到了几次:

popup.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED); 
final PopupWindow pw = new PopupWindow(popup,popup.getMeasuredHeight(),popup.getMeasuredWidth(), true); 

注意,弹出窗口弹出,PW的实际布局的充气机就是实际PopupWindow对象。

现在,我希望得到公正的弹出窗口的实际大小(这样方式,不通过页面张的,而只是在中心看起来像一个正常的应该弹出。

而且,使用ViewFlipper,我希望它在切换页面时更新弹出窗口的大小(所以页面应该按照页面大小来调整大小)是否有办法让这个工作成功?我尝试了pw.update()但没有工作非常好。

回答

1

你要测量的实际布局你会被添加到您的PopupWindow。我只是解决了把一个ListView一个PopupWindow内的一个类似的问题:T他的诀窍是在你的View中覆盖onMeasure()。重新测量ViewFlipper每次更改。

@Override 
public void onMeasure(int x, int y) 
{ 
    super.onMeasure(x, y); 

    if(x == View.MeasureSpec.UNSPECIFIED && y == View.MeasureSpec.UNSPECIFIED) 
    { 
     //measure your child views here 

     //tell the view it has been measured 
     this.setMeasuredDimension(width, height); 
    } 
}