I wrote the CordinatorLayout.Behaviour class and assigned it to a child of CordinatorLayout, LinearLayout using
app:layout_behavior="com.mob2.zd2duta.infodrawer.components. FloatingHeaderBehaviour"
but calls to layoutDependsOn, onStartNestedScroll, onInterceptTouchEvent are called, the rest are not called. What am I doing wrong
public class FloatingHeaderBehaviour extends CoordinatorLayout.Behavior<LinearLayout> { private String TAG = FloatingHeaderBehaviour.class.getSimpleName(); private Context context; public FloatingHeaderBehaviour(Context context, AttributeSet attrs) { this.context = context; } @Override public boolean layoutDependsOn(CoordinatorLayout parent, LinearLayout child, View dependency) { boolean val = (dependency.getId() == R.id.nested_scrollview); return val; } @Override public boolean onDependentViewChanged(CoordinatorLayout parent, LinearLayout child, View dependency) { Utils.logD(this.getClass().getSimpleName(), "dependency changed"); return true; } @Override public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout, LinearLayout child, View directTargetChild, View target, int nestedScrollAxes) { Utils.logD(this.getClass().getSimpleName(), "scroll started"); return super.onStartNestedScroll(coordinatorLayout,child, directTargetChild, target, nestedScrollAxes); } @Override public void onStopNestedScroll(CoordinatorLayout coordinatorLayout, LinearLayout child, View target) { Utils.logD(this.getClass().getSimpleName(), "scroll stopped"); super.onStopNestedScroll(coordinatorLayout, child, target); } @Override public void onNestedScroll(CoordinatorLayout coordinatorLayout, LinearLayout child, View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed) { Utils.logD(this.getClass().getSimpleName(), "scroll changed"); super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed); } @Override public void onNestedPreScroll(CoordinatorLayout coordinatorLayout, LinearLayout child, View target, int dx, int dy, int[] consumed) { Utils.logD(this.getClass().getSimpleName(), "scroll pre"); super.onNestedPreScroll(coordinatorLayout, child, target, dx, dy, consumed); } @Override public boolean onInterceptTouchEvent(CoordinatorLayout parent, LinearLayout child, MotionEvent ev) { Utils.logD(this.getClass().getSimpleName(), "onInterceptTouchEvent"); return super.onInterceptTouchEvent(parent, child, ev); } @Override public boolean onTouchEvent(CoordinatorLayout parent, LinearLayout child, MotionEvent ev) { Utils.logD(this.getClass().getSimpleName(), "onTouchEvent"); return super.onTouchEvent(parent, child, ev); } @Override public void onNestedScrollAccepted(CoordinatorLayout coordinatorLayout, LinearLayout child, View directTargetChild, View target, int nestedScrollAxes) { Utils.logD(this.getClass().getSimpleName(), "onNestedScrollAccepted"); super.onNestedScrollAccepted(coordinatorLayout, child, directTargetChild, target, nestedScrollAxes); } @Override public boolean onNestedFling(CoordinatorLayout coordinatorLayout, LinearLayout child, View target, float velocityX, float velocityY, boolean consumed) { Utils.logD(this.getClass().getSimpleName(), "onNestedFling"); return super.onNestedFling(coordinatorLayout, child, target, velocityX, velocityY, consumed); } @Override public boolean onNestedPreFling(CoordinatorLayout coordinatorLayout, LinearLayout child, View target, float velocityX, float velocityY) { Utils.logD(this.getClass().getSimpleName(), "onNestedPreFling"); return super.onNestedPreFling(coordinatorLayout, child, target, velocityX, velocityY); } }