我制作了一个带有recyclerview和浮动动作按钮的
Android应用程序.向下滚动时,按钮应隐藏,向上滚动时应再次显示.我用
this tutorial来实现这个行为.
结果是,当我向下滚动时FAB隐藏,但是当向上滚动时它不会再次出现:(类ScrollAwareFABBehavior与教程相同.但我使用的是嵌套布局.
这是我的布局(recyclerview位于content_main的LinearLayout中):
- <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:fitsSystemWindows="true"
- tools:context="org.myorganisation.mypackage.someActivity">
- <include layout="@layout/toolbar" />
- <include layout="@layout/content_main" />
- <android.support.design.widget.FloatingActionButton
- android:id="@+id/add_fab"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="bottom|end"
- android:layout_margin="@dimen/fab_margin"
- android:src="@drawable/plus"
- app:layout_behavior="org.myorganisation.mypackage.someActivity.helpers.ScrollAwareFABBehavior" />
- <LinearLayout
- android:id="@+id/insert_alert"
- android:layout_width="wrap_content"
- android:layout_height="50sp"
- android:layout_margin="@dimen/fab_margin"
- android:gravity="center_vertical"
- android:orientation="horizontal"
- android:paddingEnd="70sp"
- android:visibility="gone"
- app:layout_anchor="@id/add_fab"
- app:layout_anchorGravity="bottom|left">
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:gravity="center_vertical"
- android:text="@string/initial_alert"
- android:textColor="@color/colorPrimaryDark"
- android:textStyle="bold|italic" />
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:src="@drawable/ic_keyboard_arrow_right_black_24sp"
- android:tint="@color/colorPrimary" />
- </LinearLayout>
- </android.support.design.widget.CoordinatorLayout>
解决方法
从支持库的25.1.0版开始,隐藏视图不再按照
this bug滚动事件.
如comment #5所述:
This is working as intended,your dependency chain is the wrong way. Your RecyclerView (Behavior) should be triggering the FAB visibility change.