2011-07 / 2011-07-13

前のエントリ: ショートカット一覧の取得 [Android]
次のエントリ: PreferenceScreenに依存設定(dependency)を行ってチェックオフ時は操作不可 [Android]

PopupWindow#showAtLocation()が表示されない?
2011-07-13-1 / カテゴリ: [Android] / [permlink]

newした後、showAsDropDown()だけなら表示されるのに、showAtLocation()だけ叩いても表示されなかった。
いろいろ試してみると setWindowLayoutMode() が必要なのがわかった。

こんな感じ
mPopup = new PopupWindow(this);
mPopup.setWindowLayoutMode(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
mPopup.setFocusable(true);	// これがないとタッチとかできない

// 必要に応じて
mPopup.setWidth(WindowManager.LayoutParams.WRAP_CONTENT);
mPopup.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);

// ポップアップで表示するビューの設定
mPopup.setContentView(view);

if (mPopup.isShowing()) {
	// 開いてたら閉じる
	mPopup.dismiss();
	mPopup = null;
}
else {
	// 開いてなければ表示
	mPopup.showAtLocation(base, Gravity.NO_GRAVITY, x, y);
}

ちなみにdismiss()せずにActivityを閉じると例外(?)が発生するので注意
ERROR/WindowManager(13219): Activity (パッケージ名).(クラス名) has leaked window android.widget.PopupWindow$PopupViewContainer@40533870 that was originally added here
ERROR/WindowManager(13219): android.view.WindowLeaked: Activity (パッケージ名).(クラス名) has leaked window android.widget.PopupWindow$PopupViewContainer@40533870 that was originally added here
:
前のエントリ: ショートカット一覧の取得 [Android]
次のエントリ: PreferenceScreenに依存設定(dependency)を行ってチェックオフ時は操作不可 [Android]

2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12

最終更新時間: 2013-05-02 16:12