popwindow设置了点击外围消失
popupwindow点击按钮时弹出来,再点击消失,但设置了点击外围消失,但是实际出来额效果,poupwindow会消失然后再次弹出。
解决方案
private void showPopup(View v) {
selectTypeLinearLayout.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
int popWidth=selectTypeLinearLayout.getMeasuredWidth();
View view=View.inflate(getActivity(),R.layout.dialog_main_pop,null);
if(popupWindow==null){
popupWindow=new PopupWindow(view,popWidth, ViewGroup.LayoutParams.WRAP_CONTENT);
}
ListView listView= (ListView) view.findViewById(R.id.lv_pop);
MainPopupAdapter adpater=new MainPopupAdapter(getActivity(),popList);
listView.setAdapter(adpater);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
popupWindow.dismiss();
}
});
arrowTV.setBackground(getActivity().getResources().getDrawable(R.mipmap.icon_arrow_white));
popupWindow.setBackgroundDrawable(new ColorDrawable(0));
popupWindow.setOutsideTouchable(true);
popupWindow.setFocusable(true);//必须写
view.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
popupWindow.setTouchInterceptor(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction()==MotionEvent.ACTION_OUTSIDE){
popupWindow.dismiss();
return true;
}
return false;
}
});
popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
@Override
public void onDismiss() {
}
});
popupWindow.showAsDropDown(v);
}