2010-11-29 9 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

-3

あなたは、xmlファイルからそれを変更しようとすることができます

android:layout_graviry="left" 
+0

PopupWindowは他として作成されますウィンドウではなくビューであるため、このメソッドは機能しません。 – Michael