Android Dialog Set Cancel On Touch Out Side
I have this custom dialog inside an Activty which is inside ActivityGroup. I want the dialog to dismiss when clicked outside, and tried everything i found online to make it work..
Solution 1:
Ok so after lots of thinking i found out the most simple solution:
The Problem:
From some reason - although the theme I've used is a dialog and not a full screen display - the getWindow().getDecorView()
returns a View which covers the whole screen.
The Answer :
in my XML file I gave the root element an id and I've changed the function above as follow:
private View rootView;
public BaseDialog(Context context, int theme) {
super(context, theme);
//I don't think the next 2 lines are really important - but I've added them for safety
setCancelable(true);
setCanceledOnTouchOutside(true);
}
public void setRootView(int resourceId)
{
this.rootView = findViewById(resourceId);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
Rect rect = new Rect();
rootView.getHitRect(rect);
if (!rect.contains((int)event.getX(), (int)event.getY()))
{
this.dismiss();
return true;
}
return false;
}
Hope it will help someone... :)
Post a Comment for "Android Dialog Set Cancel On Touch Out Side"