| package org.apache.fineract.utils; |
| |
| import android.content.Context; |
| import android.support.design.widget.CoordinatorLayout; |
| import android.support.design.widget.FloatingActionButton; |
| import android.support.v4.view.ViewCompat; |
| import android.util.AttributeSet; |
| import android.view.View; |
| |
| public class ScrollFabBehavior extends FloatingActionButton.Behavior { |
| |
| public ScrollFabBehavior(Context context, AttributeSet attrs) { |
| super(); |
| } |
| |
| @Override |
| public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout, |
| FloatingActionButton child, View directTargetChild, |
| View target, int nestedScrollAxes) { |
| return nestedScrollAxes == ViewCompat.SCROLL_AXIS_VERTICAL || |
| super.onStartNestedScroll(coordinatorLayout, child, directTargetChild, target, |
| nestedScrollAxes); |
| } |
| |
| @Override |
| public void onNestedScroll(CoordinatorLayout coordinatorLayout, FloatingActionButton child, |
| View target, int dxConsumed, int dyConsumed, int dxUnconsumed, |
| int dyUnconsumed) { |
| super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, |
| dyUnconsumed); |
| if (dyConsumed > 0 && child.getVisibility() == View.VISIBLE) { |
| // Reason to set fab visiblity as INVISIBLE : |
| // https://stackoverflow.com/a/41386278/4672688 |
| child.hide(new FloatingActionButton.OnVisibilityChangedListener() { |
| @Override |
| public void onHidden(FloatingActionButton fab) { |
| super.onHidden(fab); |
| fab.setVisibility(View.INVISIBLE); |
| } |
| }); |
| } else if (dyConsumed < 0 && child.getVisibility() != View.VISIBLE) { |
| child.show(); |
| } |
| } |
| } |