Fix automatic show/hide of FAB

As we no longer reposition GONE views to their anchors
(If9ac02024782d799645e3e5537e46d487ecb6e52), we have to use INVISIBLE
for automatic FAB show/hide because it needs to be notified of anchor
changes.

Test: BottomSheetBehaviorTest#testFabVisibility,
AppBarWithCollapsingToolbarTest#testPinnedToolbarAndAnchoredFab, and
FloatingActionButtonTest pass on API 9, 15, 25
Bug: 32421388
Change-Id: Ie503991c28246dc7cb942c88daf4d91a9a3ee3d1
diff --git a/design/gingerbread/android/support/design/widget/FloatingActionButtonGingerbread.java b/design/gingerbread/android/support/design/widget/FloatingActionButtonGingerbread.java
index d17691c..6edc9e4 100644
--- a/design/gingerbread/android/support/design/widget/FloatingActionButtonGingerbread.java
+++ b/design/gingerbread/android/support/design/widget/FloatingActionButtonGingerbread.java
@@ -160,7 +160,7 @@
             @Override
             public void onAnimationEnd(Animation animation) {
                 mAnimState = ANIM_STATE_NONE;
-                mView.internalSetVisibility(View.GONE, fromUser);
+                mView.internalSetVisibility(fromUser ? View.GONE : View.INVISIBLE, fromUser);
                 if (listener != null) {
                     listener.onHidden();
                 }
diff --git a/design/ics/android/support/design/widget/FloatingActionButtonIcs.java b/design/ics/android/support/design/widget/FloatingActionButtonIcs.java
index 4825124..73b4cac 100644
--- a/design/ics/android/support/design/widget/FloatingActionButtonIcs.java
+++ b/design/ics/android/support/design/widget/FloatingActionButtonIcs.java
@@ -88,7 +88,8 @@
                             mAnimState = ANIM_STATE_NONE;
 
                             if (!mCancelled) {
-                                mView.internalSetVisibility(View.GONE, fromUser);
+                                mView.internalSetVisibility(fromUser ? View.GONE : View.INVISIBLE,
+                                        fromUser);
                                 if (listener != null) {
                                     listener.onHidden();
                                 }
@@ -97,7 +98,7 @@
                     });
         } else {
             // If the view isn't laid out, or we're in the editor, don't run the animation
-            mView.internalSetVisibility(View.GONE, fromUser);
+            mView.internalSetVisibility(fromUser ? View.GONE : View.INVISIBLE, fromUser);
             if (listener != null) {
                 listener.onHidden();
             }
diff --git a/design/tests/src/android/support/design/widget/BottomSheetBehaviorTest.java b/design/tests/src/android/support/design/widget/BottomSheetBehaviorTest.java
index f38a03f..3a4ae2a 100644
--- a/design/tests/src/android/support/design/widget/BottomSheetBehaviorTest.java
+++ b/design/tests/src/android/support/design/widget/BottomSheetBehaviorTest.java
@@ -46,7 +46,6 @@
 import android.support.test.espresso.matcher.ViewMatchers;
 import android.support.test.filters.MediumTest;
 import android.support.test.filters.SmallTest;
-import android.support.test.filters.Suppress;
 import android.support.v4.view.ViewCompat;
 import android.support.v4.widget.NestedScrollView;
 import android.view.LayoutInflater;
@@ -632,8 +631,6 @@
                 });
     }
 
-    // Test disabled because it is consistently failing.
-    @Suppress
     @Test
     @MediumTest
     public void testFabVisibility() {