From ba415acdc2b9648ece77e481f7345f67fe79b7b2 Mon Sep 17 00:00:00 2001 From: Chris Banes Date: Wed, 30 Nov 2016 01:18:19 +0000 Subject: [PATCH] am 48c51e59: am 7ae9fe16: am 624e90dc: am b1a51676: Fix offset calculation math * commit '48c51e594853c0f5a840dc6b75690b2af9d48dec': Fix offset calculation math GitOrigin-RevId=ba8b85a4ef455d64bb2cf640c47bc47eac657347 PiperOrigin-RevId: 140548657 --- .../design/widget/ViewOffsetHelper.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/android/support/design/widget/ViewOffsetHelper.java b/src/android/support/design/widget/ViewOffsetHelper.java index f1058a8db..a69011462 100644 --- a/src/android/support/design/widget/ViewOffsetHelper.java +++ b/src/android/support/design/widget/ViewOffsetHelper.java @@ -16,9 +16,9 @@ package android.support.design.widget; -import android.os.Build; import android.support.v4.view.ViewCompat; import android.view.View; +import android.view.ViewParent; /** * Utility helper for moving a {@link android.view.View} around using @@ -51,15 +51,15 @@ class ViewOffsetHelper { } private void updateOffsets() { - if (Build.VERSION.SDK_INT == 22) { - // FIXME When running on L MR1, we have a problem with view's which are offset off - // screen then back on. Using translationX/Y fixes it for now. - ViewCompat.setTranslationY(mView, mOffsetTop); - ViewCompat.setTranslationX(mView, mOffsetLeft); - } else { - // Else we can use the offset position methods - ViewCompat.offsetTopAndBottom(mView, mOffsetTop - mView.getTop() - mLayoutTop); - ViewCompat.offsetLeftAndRight(mView, mOffsetLeft - mView.getLeft() - mLayoutLeft); + if (mOffsetLeft != 0 || mOffsetTop != 0) { + ViewCompat.offsetTopAndBottom(mView, mOffsetTop - (mView.getTop() - mLayoutTop)); + ViewCompat.offsetLeftAndRight(mView, mOffsetLeft - (mView.getLeft() - mLayoutLeft)); + + // Manually invalidate the parent to make sure we get drawn + ViewParent parent = mView.getParent(); + if (parent instanceof View) { + ((View) parent).invalidate(); + } } }