可能重复:
How to dismiss the dialog with click on outside of the dialog?
如何在弹出窗口外点击以解除它?
这是我的代码:
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,如果这会影响任何东西?
答案 0 :(得分:10)
请将setOutsideTouchable(true)与背景一起设置。这对我来说很好。我知道将drawable背景设置为null可以杀死OnTouchListener。
答案 1 :(得分: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);
}
});