diff --git a/app/src/main/java/org/solovyev/android/calculator/view/PagerViewFabBehavior.java b/app/src/main/java/org/solovyev/android/calculator/view/PagerViewFabBehavior.java
new file mode 100644
index 00000000..f46e04a5
--- /dev/null
+++ b/app/src/main/java/org/solovyev/android/calculator/view/PagerViewFabBehavior.java
@@ -0,0 +1,60 @@
+package org.solovyev.android.calculator.view;
+
+import android.content.Context;
+import android.support.design.widget.CoordinatorLayout;
+import android.support.design.widget.FloatingActionButton;
+import android.support.v4.view.ViewCompat;
+import android.support.v4.view.ViewPager;
+import android.support.v7.widget.RecyclerView;
+import android.util.AttributeSet;
+import android.view.View;
+
+public class PagerViewFabBehavior extends FloatingActionButton.Behavior {
+
+ public PagerViewFabBehavior() {
+ super();
+ }
+
+ public PagerViewFabBehavior(Context context, AttributeSet attributeSet) {
+ super();
+ }
+
+ @Override
+ public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout,
+ FloatingActionButton child, View directTargetChild, View target, int nestedScrollAxes) {
+ switch (nestedScrollAxes) {
+ case ViewCompat.SCROLL_AXIS_HORIZONTAL:
+ return target instanceof ViewPager;
+ case ViewCompat.SCROLL_AXIS_VERTICAL:
+ return target instanceof RecyclerView;
+ default:
+ return false;
+ }
+ }
+
+ @Override
+ public void onNestedScroll(CoordinatorLayout coordinatorLayout, FloatingActionButton child,
+ View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed) {
+ onScroll(child, dxConsumed, dyConsumed);
+ }
+
+ @Override
+ public boolean onNestedFling(CoordinatorLayout coordinatorLayout, FloatingActionButton child,
+ View target, float velocityX, float velocityY, boolean consumed) {
+ return onScroll(child, velocityX, velocityY);
+ }
+
+ private boolean onScroll(FloatingActionButton child, float scrollX, float scrollY) {
+ if (scrollY > 0 && child.getVisibility() == View.VISIBLE) {
+ child.hide();
+ return true;
+ } else if (scrollY < 0 && child.getVisibility() != View.VISIBLE) {
+ child.show();
+ return true;
+ } else if (scrollX != 0 && child.getVisibility() != View.VISIBLE) {
+ child.show();
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/app/src/main/res/layout-land/activity_tabs.xml b/app/src/main/res/layout-land/activity_tabs.xml
index c69c26f9..5e89c09b 100644
--- a/app/src/main/res/layout-land/activity_tabs.xml
+++ b/app/src/main/res/layout-land/activity_tabs.xml
@@ -59,6 +59,7 @@
diff --git a/app/src/main/res/layout/activity_tabs.xml b/app/src/main/res/layout/activity_tabs.xml
index 9fcc5115..53564df5 100644
--- a/app/src/main/res/layout/activity_tabs.xml
+++ b/app/src/main/res/layout/activity_tabs.xml
@@ -58,6 +58,7 @@