diff --git a/library/src/main/java/uk/co/deanwild/materialshowcaseview/target/ViewTarget.java b/library/src/main/java/uk/co/deanwild/materialshowcaseview/target/ViewTarget.java index 8595a2ae..32fbc636 100644 --- a/library/src/main/java/uk/co/deanwild/materialshowcaseview/target/ViewTarget.java +++ b/library/src/main/java/uk/co/deanwild/materialshowcaseview/target/ViewTarget.java @@ -1,6 +1,8 @@ package uk.co.deanwild.materialshowcaseview.target; import android.app.Activity; +import android.content.Context; +import android.content.ContextWrapper; import android.graphics.Point; import android.graphics.Rect; import android.view.View; @@ -22,11 +24,23 @@ public ViewTarget(int viewId, Activity activity) { public Point getPoint() { int[] location = new int[2]; mView.getLocationInWindow(location); - int x = location[0] + mView.getWidth() / 2; - int y = location[1] + mView.getHeight() / 2; + View decor = getActivity(mView).getWindow().getDecorView(); + int x = location[0] - decor.getPaddingLeft() + mView.getWidth() / 2; + int y = location[1] - decor.getPaddingTop() + mView.getHeight() / 2; return new Point(x, y); } + private Activity getActivity(View view) { + Context context = view.getContext(); + while (context instanceof ContextWrapper) { + if (context instanceof Activity) { + return (Activity)context; + } + context = ((ContextWrapper)context).getBaseContext(); + } + return null; + } + @Override public Rect getBounds() { int[] location = new int[2];