Skip to content

Commit 52f1737

Browse files
dsn5ftleticiarossi
authored andcommitted
[Predictive Back][Side Sheets] Fix subtle detached side sheet glitch where after predictive back the sheet does not fully slide off screen
PiperOrigin-RevId: 527577382
1 parent d8c5c2c commit 52f1737

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

lib/java/com/google/android/material/motion/MaterialSideContainerBackHelper.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
import android.view.Gravity;
3131
import android.view.View;
3232
import android.view.ViewGroup;
33+
import android.view.ViewGroup.LayoutParams;
34+
import android.view.ViewGroup.MarginLayoutParams;
3335
import android.window.BackEvent;
3436
import androidx.annotation.GravityInt;
3537
import androidx.annotation.NonNull;
@@ -130,7 +132,7 @@ public void finishBackProgress(
130132
@Nullable AnimatorUpdateListener finishAnimatorUpdateListener) {
131133
boolean leftSwipeEdge = backEvent.getSwipeEdge() == BackEvent.EDGE_LEFT;
132134
boolean leftGravity = checkAbsoluteGravity(gravity, Gravity.LEFT);
133-
float scaledWidth = view.getWidth() * view.getScaleX();
135+
float scaledWidth = view.getWidth() * view.getScaleX() + getEdgeMargin(leftGravity);
134136
ObjectAnimator finishAnimator =
135137
ObjectAnimator.ofFloat(view, View.TRANSLATION_X, leftGravity ? -scaledWidth : scaledWidth);
136138
if (finishAnimatorUpdateListener != null) {
@@ -179,4 +181,13 @@ private boolean checkAbsoluteGravity(@GravityInt int gravity, @GravityInt int ch
179181
GravityCompat.getAbsoluteGravity(gravity, ViewCompat.getLayoutDirection(view));
180182
return (absoluteGravity & checkFor) == checkFor;
181183
}
184+
185+
private int getEdgeMargin(boolean leftGravity) {
186+
LayoutParams layoutParams = view.getLayoutParams();
187+
if (layoutParams instanceof MarginLayoutParams) {
188+
MarginLayoutParams marginLayoutParams = (MarginLayoutParams) layoutParams;
189+
return leftGravity ? marginLayoutParams.leftMargin : marginLayoutParams.rightMargin;
190+
}
191+
return 0;
192+
}
182193
}

0 commit comments

Comments
 (0)