我试过以下
popupMoreWindow.setBackgroundDrawable(new BitmapDrawable());
popupMoreWindow.setOutsideTouchable(true);
if(popupOpened) {
popupMoreWindow.dismiss();
popupOpened = false;
} else {
popupMoreWindow.showAsDropDown(custLookUpRowowHolder.btnMore, 150, 5);
popupOpened = true;
}
答案 0 :(得分:0)
要点击按钮关闭弹出窗口,点击外部,请按照以下步骤
触摸拦截器并在动作为MotionEvent时关闭弹出窗口。 ACTION_OUTSIDE使用setFocusable(true)将弹出窗口设置为可聚焦
设置可聚焦可确保弹出窗口可以抓取外部触摸事件,因为它还可以捕获菜单项或按钮上的单击,它确保弹出窗口不会再次启动(如果已经显示)。
< / LI>满足您要求的代码段应如下所示。
btn.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
if (window == null) {
View contentView = getLayoutInflater(null).inflate(R.layout.popup_menu, null);
window = new PopupWindow(contentView, ActionBar.LayoutParams.WRAP_CONTENT, ActionBar.LayoutParams.WRAP_CONTENT);
window.setBackgroundDrawable(new BitmapDrawable(getResources(), ""));
window.setOutsideTouchable(true);
window.setFocusable(true);
window.setTouchInterceptor(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction()==MotionEvent.ACTION_OUTSIDE){
window.dismiss();
return true;
}
return false;
}
});
}
window.showAsDropDown(getActivity().findViewById(R.id.action_open_popup));
return true;
}
});
`