2011-08-04 248 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); 
    } 
}