PCスペック
Windows10 HOME 64bit
メモリ 32GB
プロセッサ Intel Core i7-8700CPU 3.20GHz
Android Studio 3.4.1(最新ver)
デモ用端末(XPERIA OS:7.0 API 24)
https://qiita.com/nein37/items/cc4fe1dc4f9527f8dd59
を参考にして,ポップアップウインドウを作ることができました.
現在行いたいのは,このポップアップウィンドウを同じ画面で複数生成することです.
java
1 2private PopupWindow mPopupWindow; 3 4@Override 5 protected void onCreate(Bundle savedInstanceState) { 6 7//~~~~~~~~~~~~~~~中略~~~~~~~~~~~~~~~~~~~~~~ 8 9mPopupWindow = new PopupWindow(MainActivity.this); 10 11// レイアウト設定 12View popupView = getLayoutInflater().inflate(R.layout.popup_layout, null); 13 14 15 popupView.findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { 16 @Override 17 public void onClick(View v) { 18 if (mPopupWindow.isShowing()) { 19 mPopupWindow.dismiss(); 20 21 } 22 } 23 }); 24 25 mPopupWindow.setContentView(popupView); 26 // 背景設定 27 mPopupWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.popup_background)); 28 29 // タップ時に他のViewでキャッチされないための設定 30 mPopupWindow.setOutsideTouchable(true); 31 mPopupWindow.setFocusable(true); 32 33 34 35 36 // 表示サイズの設定 今回は幅300dp 37 float width = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 300, getResources().getDisplayMetrics()); 38 mPopupWindow.setWindowLayoutMode((int) width, WindowManager.LayoutParams.WRAP_CONTENT); 39 mPopupWindow.setWidth((int) width); 40 mPopupWindow.setHeight(WindowManager.LayoutParams.WRAP_CONTENT); 41 42 // 画面中央に表示 43 mPopupWindow.showAtLocation(findViewById(R.id.show_button), Gravity.CENTER, 0, 0); 44
こような形で,インスタンスを生成しているのですが,これだと1個しか生成できないです.
試したこと
java
1private List<PopupWindow> mPopupWindow; 2 3@Override 4 protected void onCreate(Bundle savedInstanceState) { 5 6//~~~~~~~~~~~~~~~中略~~~~~~~~~~~~~~~~~~~~~~ 7 8mPopupWindow = new ArrayList<PopupWindow>(); 9
とりあえず複数作るためにすべきこととして,上記のようにリストを作ってみたのですが,
isShowing()やsetContentView()などの,メソッドが赤字になってしまいエラーとなりました.
また,もともとmPopupWindow = new PopupWindow(MainActivity.this);であり,(MainActivity.this)の部分の記述もどのようにすればよいのかがわかりません.
なんとか1つではなく複数生成するための方法はありませんでしょうか?
回答1件
あなたの回答
tips
プレビュー