2012-12-03 37 views
3

當我打電話showAsDropDown無需後期(即,直在代碼中)我看到彈出 -Android的 - 使用後,當PopupWindow沒有顯示

PopupWindow w = new PopupWindow(v.getContext()); 
w.showAsDropDown(v); 
然而

,當我試圖使用v.post()(或者與或沒有延遲),我沒有看到彈出窗口。

v.post(new Runnable() { 
      @Override 
      public void run() { 
       w.showAsDropDown(v); 
      } 
     }); 

可能是什麼造成的?

回答

3

嗯,我覺得自己很愚蠢,但我發現這個問題,並準備離開的問題+解決方案,爲子孫後代 -

的問題是,我忘了打電話給更新的帖子:)

v.post(new Runnable() { 
      @Override 
      public void run() { 
       w.showAsDropDown(v); 
       w.update(v, 0, 0, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
      } 
     }); 

此代碼有效。

+3

不知道更新是必要的。我懷疑你只需要設置你的popupwindow的尺寸,而更新就是這樣做的。參見:http://stackoverflow.com/questions/5504755/popupview-not-showing-up。 – mpellegr

+1

默認情況下,PopupWindow的佈局參數設置爲0。這意味着它期望一個明確的大小。您應該給它一個大小或改變它的佈局PARAMS爲wrap_content或match_parent:'pw.setWindowLayoutMode(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);'。這就是更新工作的原因。 –