2010-11-29 65 views
4

我有一個必須顯示一個彈出窗口的按鈕。彈出窗口必須與按鈕的右側對齊。我就是這麼做的。更改PopupWindow的重力

button.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(final View view) { 
     if(popup == null) { 
      final View view = getLayoutInflater().inflate(R.layout.popup, null); 
      popup = new PopupWindow(view); 
     } 

     if(popup.isShowing()) { 
      popup.dismiss(); 
     } else { 
      popup.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED); 
      popup.setFocusable(true); 
      popup.setWindowLayoutMode(ViewGroup.LayoutParams.WRAP_CONTENT, 
       ViewGroup.LayoutParams.WRAP_CONTENT); 
      popup.showAsDropDown(button, 0, 0); 
     } 
    } 
}); 

此代碼工作正常,但彈出窗口與按鈕的左側對齊。有沒有簡單的方法來改變PopupWindow的引力?

回答

11

我發現的最簡單的方法是指定x偏移量參數:

final View view = popup.getContentView(); 
view.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED); 
popup.showAsDropDown(button, button.getWidth() - view.getMeasuredWidth(), 0); 
+0

雖然我在使用ListPopupWindow時遇到了麻煩。 – user1841702 2016-09-08 18:20:15

-3

你可以嘗試把它從XML文件更改:

android:layout_graviry="left" 
+0

PopupWindow創建爲其他窗口,而不是一個視圖,所以這種方法不起作用。 – Michael 2010-11-30 08:27:24