2

可能重复:
如何通过单击对话框外部来关闭对话框?

如何在弹出窗口之外单击以将其关闭?

这是我的代码:

cell.setOnClickListener(new OnClickListener(){

    /*This code is in a separate class so I needed to use ctx as context 
    *and the string "layout_inflater" because it was not recognizing 
    *LAYOUT_INFLATER_SERVICE*/

    @Override
    public void onClick(View arg0) {LayoutInflater layoutInflater  = 
    (LayoutInflater)ctx.getSystemService("layout_inflater");  
    View popupView = layoutInflater.inflate(R.layout.popup_window, null); 
    final PopupWindow popupWindow = new PopupWindow(popupView, 
          LayoutParams.WRAP_CONTENT,  LayoutParams.WRAP_CONTENT);
    popupWindow.showAtLocation(newParentLayout, Gravity.CENTER, 0, 0); 
    }

我也尝试添加所有这些但没有结果。

 popupWindow.setTouchable(true);
 popupWindow.setFocusable(true);
 popupWindow.setOutsideTouchable(true);
 Drawable bg = ctx.getResources().getDrawable(R.drawable.popup_bg);
 popupWindow.setBackgroundDrawable(bg);

我没主意了。有什么帮助吗?

编辑添加:主布局是 ViewPager/PagerAdapter 如果这会影响什么?

4

2 回答 2

10

请与背景一起设置 setOutsideTouchable(true)。这对我来说很好。我知道将背景可绘制对象设置为 null 会杀死 OnTouchListener。

于 2012-09-23T18:19:33.163 回答
0

试试这个方法。

 cell.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            LayoutInflater layoutInflater  = 
                (LayoutInflater)ctx.getSystemService("layout_inflater");  
                View popupView = layoutInflater.inflate(R.layout.popup_window, null); 
                final PopupWindow popupWindow = new PopupWindow(ctx);

                popupWindow.setFocusable(true);
                popupWindow.setContentView(popupView);
                popupWindow.showAtLocation(b, Gravity.CENTER, 0, 0); 
                popupWindow.update(100, 100, 150, 150);
        }
    });
于 2012-09-23T18:52:08.750 回答