Android Popup Window dismisses when clicked outsid

2019-02-17 10:26发布

问题:

I was hoping to get an answer to my problem I have at the moment.

I have a class which extends popup window. It works fine except I don't want the window to dismiss when I click outside of the window.

At the moment I have setOutsideTouchable(false); but this just stops events outside the window, it still dismisses the popup.

A dialog has setCanceledOnTouchOutside(false), is there something similar I can use?

Thanks

回答1:

Ok so fixed in the end.

First made the main layout which the popup sits on a relative layout. Then placed a full screen blank layout on top which I made invisible and transparent.

Then show when the popup is shown, set the full screen panel visible with setVisibility(View.VISIBLE); and hide when popup is hidden with setVisibility(View.GONE);

Also need to return true from an on touch listener for the layout with (To stop touch events passing back to the main layout):

blocker.setOnTouchListener(new OnTouchListener() { 
@Override
public boolean onTouch(View v, MotionEvent event) {
return true;
}
});

And give the popup window the properties:

setTouchable(true);
setOutsideTouchable(false);

Cheers



回答2:

What are you using this PopupWindow for? It sounds like you use it in a more Dialog-ish way.

That being said you'll probably have to look into using setTouchInterceptor and then creating your own OnTouchListener which you will use to check where the touch was performed (on the Popup or not).