package com.leon.androidplus.behavior; import android.content.Context; import android.support.design.widget.CoordinatorLayout; import android.support.design.widget.Snackbar; import android.support.v4.view.ViewCompat; import android.util.AttributeSet; import android.view.View; public class MoveUpBehavior extends CoordinatorLayout.Behavior<View> { public MoveUpBehavior() { super(); } public MoveUpBehavior(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean layoutDependsOn(CoordinatorLayout parent, View child, View dependency) { return dependency instanceof Snackbar.SnackbarLayout; } /* @Override public boolean onStartNestedScroll(@NonNull CoordinatorLayout coordinatorLayout, @NonNull View child, @NonNull View directTargetChild, @NonNull View target, int axes, int type) { return axes == ViewCompat.SCROLL_AXIS_VERTICAL; } @Override public void onNestedScroll(@NonNull CoordinatorLayout coordinatorLayout, @NonNull View child, @NonNull View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed, int type) { if (dyConsumed > 0) { child.animate().translationY(child.getHeight()).setDuration(500).start(); } else if (dyConsumed < 0){ child.animate().translationY(0).setDuration(500).start(); } }*/ @Override public boolean onDependentViewChanged(CoordinatorLayout parent, View child, View dependency) { float translationY = Math.min(0, dependency.getTranslationY() - dependency.getHeight()); child.setTranslationY(translationY); return true; } //you need this when you swipe the snackbar(thanx to ubuntudroid's comment) @Override public void onDependentViewRemoved(CoordinatorLayout parent, View child, View dependency) { ViewCompat.animate(child).translationY(0).start(); } }