如何定义一个CoordinatorLayout.Behavior类为BottomNavigationView哪些滚动与RecyclerView veritical滚动同步。垂直滚动协调器底部导航视图的行为与RecyclerView垂直滚动
我看过this和this,但它只是在立即显示或隐藏了关于纵向滚动事件的NavigationView
。我不想立即显示/隐藏NavigationView
,而是我想要一个类似AppbarLayout
的行为,其中Toolbar
的滚动标记为app:layout_scrollFlags="scroll|enterAlways"
。
public class BottomNavigationBehavior extends CoordinatorLayout.Behavior<BottomNavigationView> {
public BottomNavigationBehavior() {
super();
}
public BottomNavigationBehavior(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean layoutDependsOn(CoordinatorLayout parent, BottomNavigationView child, View dependency) {
boolean dependsOn = dependency instanceof FrameLayout;
return dependsOn;
}
@Override
public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout, BottomNavigationView child, View directTargetChild, View target, int nestedScrollAxes) {
return nestedScrollAxes == ViewCompat.SCROLL_AXIS_VERTICAL;
}
@Override
public void onNestedPreScroll(CoordinatorLayout coordinatorLayout, BottomNavigationView child, View target, int dx, int dy, int[] consumed) {
if(dy < 0) {
showBottomNavigationView(child);
}
else if(dy > 0) {
hideBottomNavigationView(child);
}
}
private void hideBottomNavigationView(BottomNavigationView view) {
view.animate().translationY(view.getHeight());
}
private void showBottomNavigationView(BottomNavigationView view) {
view.animate().translationY(0);
}
}
我会尝试设置appbarlayout的依赖关系,并根据高度变化的appbarlayout移动BottomNavigationBar –
我的意思是,我要实现就像appbar布局的行为的布局行为,这是为了响应RecyclerView滚动事件 – Darish
所以用回收视图,而不是仅仅unshowing慢慢搬出去? –