如何定義一個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慢慢搬出去? –