Android APIs
public static class

AppBarLayout.ScrollingViewBehavior

extends Behavior<View>
java.lang.Object
   ↳ android.support.design.widget.CoordinatorLayout.Behavior<android.view.View>
     ↳ android.support.design.widget.AppBarLayout.ScrollingViewBehavior

Class Overview

Behavior which should be used by Views which can scroll vertically and support nested scrolling to automatically scroll any AppBarLayout siblings.

Summary

Public Constructors
AppBarLayout.ScrollingViewBehavior()
AppBarLayout.ScrollingViewBehavior(Context context, AttributeSet attrs)
Public Methods
int getLeftAndRightOffset()
int getOverlayTop()
Returns the distance that this view should overlap any AppBarLayout.
int getTopAndBottomOffset()
boolean layoutDependsOn(CoordinatorLayout parent, View child, View dependency)
Determine whether the supplied child view has another specific sibling view as a layout dependency.
boolean onDependentViewChanged(CoordinatorLayout parent, View child, View dependency)
Respond to a change in a child's dependent view

This method is called whenever a dependent view changes in size or position outside of the standard layout flow.

boolean onLayoutChild(CoordinatorLayout parent, V child, int layoutDirection)
Called when the parent CoordinatorLayout is about the lay out the given child view.
boolean onMeasureChild(CoordinatorLayout parent, View child, int parentWidthMeasureSpec, int widthUsed, int parentHeightMeasureSpec, int heightUsed)
Called when the parent CoordinatorLayout is about to measure the given child view.
boolean setLeftAndRightOffset(int offset)
void setOverlayTop(int overlayTop)
Set the distance that this view should overlap any AppBarLayout.
boolean setTopAndBottomOffset(int offset)
[Expand]
Inherited Methods
From class android.support.design.widget.CoordinatorLayout.Behavior
From class java.lang.Object

Public Constructors

public AppBarLayout.ScrollingViewBehavior ()

public AppBarLayout.ScrollingViewBehavior (Context context, AttributeSet attrs)

Public Methods

public int getLeftAndRightOffset ()

public int getOverlayTop ()

Returns the distance that this view should overlap any AppBarLayout.

public int getTopAndBottomOffset ()

public boolean layoutDependsOn (CoordinatorLayout parent, View child, View dependency)

Determine whether the supplied child view has another specific sibling view as a layout dependency.

This method will be called at least once in response to a layout request. If it returns true for a given child and dependency view pair, the parent CoordinatorLayout will:

  1. Always lay out this child after the dependent child is laid out, regardless of child order.
  2. Call onDependentViewChanged(CoordinatorLayout, V, View) when the dependency view's layout or position changes.

Parameters
parent the parent view of the given child
child the child view to test
dependency the proposed dependency of child
Returns
  • true if child's layout depends on the proposed dependency's layout, false otherwise

public boolean onDependentViewChanged (CoordinatorLayout parent, View child, View dependency)

Respond to a change in a child's dependent view

This method is called whenever a dependent view changes in size or position outside of the standard layout flow. A Behavior may use this method to appropriately update the child view in response.

A view's dependency is determined by layoutDependsOn(CoordinatorLayout, android.view.View, android.view.View) or if child has set another view as it's anchor.

Note that if a Behavior changes the layout of a child via this method, it should also be able to reconstruct the correct position in onLayoutChild. onDependentViewChanged will not be called during normal layout since the layout of each child view will always happen in dependency order.

If the Behavior changes the child view's size or position, it should return true. The default implementation returns false.

Parameters
parent the parent view of the given child
child the child view to manipulate
dependency the dependent view that changed
Returns
  • true if the Behavior changed the child view's size or position, false otherwise

public boolean onLayoutChild (CoordinatorLayout parent, V child, int layoutDirection)

Called when the parent CoordinatorLayout is about the lay out the given child view.

This method can be used to perform custom or modified layout of a child view in place of the default child layout behavior. The Behavior's implementation can delegate to the standard CoordinatorLayout measurement behavior by calling parent.onMeasureChild.

If a Behavior implements onDependentViewChanged(CoordinatorLayout, android.view.View, android.view.View) to change the position of a view in response to a dependent view changing, it should also implement onLayoutChild in such a way that respects those dependent views. onLayoutChild will always be called for a dependent view after its dependency has been laid out.

Parameters
parent the parent CoordinatorLayout
child child view to lay out
layoutDirection the resolved layout direction for the CoordinatorLayout, such as LAYOUT_DIRECTION_LTR or LAYOUT_DIRECTION_RTL.
Returns
  • true if the Behavior performed layout of the child view, false to request default layout behavior

public boolean onMeasureChild (CoordinatorLayout parent, View child, int parentWidthMeasureSpec, int widthUsed, int parentHeightMeasureSpec, int heightUsed)

Called when the parent CoordinatorLayout is about to measure the given child view.

This method can be used to perform custom or modified measurement of a child view in place of the default child measurement behavior. The Behavior's implementation can delegate to the standard CoordinatorLayout measurement behavior by calling parent.onMeasureChild.

Parameters
parent the parent CoordinatorLayout
child the child to measure
parentWidthMeasureSpec the width requirements for this view
widthUsed extra space that has been used up by the parent horizontally (possibly by other children of the parent)
parentHeightMeasureSpec the height requirements for this view
heightUsed extra space that has been used up by the parent vertically (possibly by other children of the parent)
Returns
  • true if the Behavior measured the child view, false if the CoordinatorLayout should perform its default measurement

public boolean setLeftAndRightOffset (int offset)

public void setOverlayTop (int overlayTop)

Set the distance that this view should overlap any AppBarLayout.

Parameters
overlayTop the distance in px

public boolean setTopAndBottomOffset (int offset)