我正在尝试为 FAB 编写自定义行为。目前,当调用 CoordinatorLayout.Behavior 类中的 onNestedScroll() 方法时,我从这里获取的行为控制了 FAB 的可见性。
但是,onNestedScroll() 仅在 AppBarLayout 到达屏幕顶部时(即 AppBarLayout 已折叠时)检测向下滚动事件(即何时dyConsumed > 0
)(注意: dyConsumed 是 onNestedScroll 的参数),并且 NestedScrollView 的内容(或另一个垂直滚动视图)是屏幕上唯一可见的滚动内容。
我希望在 AppbBarLayout 折叠之前用户向下滚动后 FAB 消失。
我尝试使 FAB 依赖于另一个视图:
@Override
public boolean layoutDependsOn(CoordinatorLayout parent, FloatingActionButton child, View dependency) {
return dependency instanceof viewToDependOn;
}
然后当视图改变状态时使视图消失:
@Override
public boolean onDependentViewChanged(CoordinatorLayout parent, final FloatingActionButton child, View dependency) {
child.setVisibility(View.GONE);
return true;
}
但是因为 onDependentViewChanged 每次在触摸事件后调用 FAB 依赖于该方法的视图过于频繁,所以一旦 FAB 变为不可见,我就无法再次使其可见。
简而言之,我的问题是:如何在不依赖 AppBarLayout 的滚动事件的情况下在 NestedScrollView 中切换 FAB 的可见性状态?
如果您需要更多代码,请告诉我,
提前致谢