使用CoordinatorLayout 作为您的父布局。
为FloatingActionButton创建滚动行为
将此类用于滚动行为
public class FabBehaviour extends FloatingActionButton.Behavior {
private static final String TAG = FabBehaviour.class.getSimpleName();
int preDX = 0;
int preFinal = 0;
@Override
public void onStopNestedScroll(CoordinatorLayout coordinatorLayout, FloatingActionButton child, View target) {
Log.d(TAG, "Stop");
child.show();
super.onStopNestedScroll(coordinatorLayout, child, target);
}
public FabBehaviour(Context context, AttributeSet attrs) {
super();
}
@Override
public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout,
FloatingActionButton child, View directTargetChild, View target, int nestedScrollAxes) {
if (ViewCompat.SCROLL_AXIS_NONE == nestedScrollAxes) {
child.show();
}
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);
preFinal = dyConsumed;
if (dyConsumed > 0 && child.getVisibility() == View.VISIBLE && preDX < dyConsumed) {
child.hide();
} else if (dyConsumed < -5 && child.getVisibility() != View.VISIBLE) {
child.show();
}
preDX = dyConsumed;
} }
现在在布局的“FlotingActionButton”内添加这个标签
app:layout_behavior="<package name>.FabBehaviour"