【AndroidのViewを制する】 ListPopupWindowを使いこなしてポップアップを表示する
今回、紹介するListPopupWindowは画面の任意の位置に好きなListViewをポップアップすることができます。
メソッドがたくさんあるため数回に分割して説明します。
今回はListPopupWindowの基本的な使い方を説明します。
ListPopupWindowを表示するためのメソッド
ListPopupWindowを表示するまでに使用するメソッドは下記の通です。void setAnchorView(View anchor) |
ListPopupWindowを表示するときのアンカーViewを設定するメソッドです。 アンカーViewが設定されていない状態で表示すると例外が発生します。 |
View getAnchorView() | 現在設定されているアンカーViewを取得するメソッドです。 |
void setHeight(int height) |
ListPopupWindowの高さを設定します。 ViewGroup.LayoutParams.WRAP_CONTENTやViewGroup.LayoutParams.MATCH_PARENTを設定することができます。 |
int getHeight() | ListPopupWindowの高さを取得します。 |
void setWidth(int width) |
ListPopupWindowの高さを取得します。 ViewGroup.LayoutParams.WRAP_CONTENTやViewGroup.LayoutParams.MATCH_PARENTを設定することができます。 |
int getWidth() | ListPopupWindowの幅を取得します。 |
void setVerticalOffset(int offset) |
表示位置を垂直方向に移動させる値(ピクセル)を設定します。 offsetが正の値の場合は下方向に、負の値の場合は上方向に移動します。 |
int getVerticalOffset() | 表示位置を垂直方向に移動させる値(ピクセル)を取得します。 |
void setHorizontalOffset(int offset) |
表示位置を水平方向に移動させる値(ピクセル)を設定します。 offsetが正の値の場合は右方向に、負の値の場合は左方向に移動します。 |
int getHorizontalOffset() | 表示位置を水平方向に移動させる値(ピクセル)を取得します。 |
void show() | ポップアップを表示する、既に表示されている場合はサイズと位置を再計算します。 |
void postShow() | UIスレッド上でポップアップを表示します、既に表示されている場合はサイズと位置を再計算します。 |
void dismiss() | ポップアップの表示を終了します。 |
boolean isShowing() | ポップアップの表示状態を返却します。 |
ListPopupWindowを表示する
- インスタンス化
- ListPopupWindow#setWidthとListPopupWindow#setHeightを使い、幅と高さを設定する
- ListPopupWindow#setHorizontalOffsetとListPopupWindow#setVerticalOffsetを使い、水平方向と垂直方向のオフセット位置を設定する
- ListPopupWindow#setAnchorViewを使用して表示位置を決める
- ListPopupWindow#showを使い表示する
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); FrameLayout frameLayout = new FrameLayout(this); final Button button = new Button(this); button.setText("表示"); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ListPopupWindow listPopupWindow = createListPopupWindow(button); listPopupWindow.show(); } }); FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); layoutParams.gravity = Gravity.CENTER; frameLayout.addView(button , layoutParams); setContentView(frameLayout); } private ListPopupWindow createListPopupWindow(Button button) { ListPopupWindow listPopupWindow = new ListPopupWindow(this); // アンカーViewの設定 listPopupWindow.setAnchorView(button); // 幅の設定 listPopupWindow.setWidth(500); // 高さの設定 listPopupWindow.setHeight(500); // 垂直下方向に表示位置を200ピクセル移動させる。 listPopupWindow.setVerticalOffset(200); // 水平右方向に表示位置を200ピクセル移動させる。 listPopupWindow.setHorizontalOffset(200); return listPopupWindow; } }