popupWindowView 是自定义的一个视图
private void showPopupWindow(View view) {
// 设置按钮的点击事件
TextView wenzhang = (TextView) popupWindowView.findViewById(R.id.wenzhang);
TextView shiping = (TextView) popupWindowView.findViewById(R.id.shiping);
wenzhang.setOnClickListener(this);//设置事件监听
shiping.setOnClickListener(this);
final PopupWindow popupWindow = new PopupWindow(popupWindowView,
ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, true);
popupWindow.setTouchable(true);
// popupWindow.setTouchInterceptor(new View.OnTouchListener() {
// @Override
// public boolean onTouch(View v, MotionEvent event) {
// Log.i("mengdd", "onTouch : ");
// return false;
这里如果返回true的话,touch事件将被拦截
拦截后 PopupWindow的onTouchEvent不被调用,这样点击外部区域无法dismiss
// }
// });
// 如果不设置PopupWindow的背景,无论是点击外部区域还是Back键都无法dismiss弹框
// 我觉得这里是API的一个bug 设置一个透明颜色
popupWindow.setBackgroundDrawable(new ColorDrawable(0x00000000));
// 设置好参数之后再show 参数代表xy轴的偏移量
popupWindow.showAsDropDown(view, -14, 8);
// popupWindow.showAsDropDown(view);
}