# AppBarLayout.ScrollingViewBehavior

added in[version 22.2.0](https://developer.android.com/topic/libraries/support-library/revisions)  
belongs to Maven artifact com.android.support:design:27.1.0  
Summary:[Ctors](https://developer.android.com/reference/android/support/design/widget/AppBarLayout.ScrollingViewBehavior#pubctors)\|[Methods](https://developer.android.com/reference/android/support/design/widget/AppBarLayout.ScrollingViewBehavior#pubmethods)\|[Protected Methods](https://developer.android.com/reference/android/support/design/widget/AppBarLayout.ScrollingViewBehavior#promethods)\|[Inherited Methods](https://developer.android.com/reference/android/support/design/widget/AppBarLayout.ScrollingViewBehavior#inhmethods)\|[\[Expand All\]](https://developer.android.com/reference/android/support/design/widget/AppBarLayout.ScrollingViewBehavior#)  

# AppBarLayout.ScrollingViewBehavior

| This package is part of the Android[support library](https://developer.android.com/topic/libraries/support-library)which is no longer maintained. The support library has been superseded by[AndroidX](https://developer.android.com/jetpack/androidx)which is part of[Jetpack](https://developer.android.com/jetpack). We recommend using the AndroidX libraries in all new projects. You should also consider[migrating](https://developer.android.com/jetpack/androidx/migrate)existing projects to AndroidX. To find the AndroidX class that maps to this deprecated class, see the AndroidX support library[class mappings](https://developer.android.com/jetpack/androidx/migrate/class-mappings).

`
public
static


class
AppBarLayout.ScrollingViewBehavior
`  
`


``

extends `[Behavior](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior)`<V extends `[View](https://developer.android.com/reference/android/view/View.html)`>


``


`

|---|---|------------------------------------------------------------------|
| java.lang.Object                                                       |||
| ↳ | [android.support.design.widget.CoordinatorLayout.Behavior](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior)\<V extends[android.view.View](https://developer.android.com/reference/android/view/View.html)\> ||
|   | ↳ | android.support.design.widget.AppBarLayout.ScrollingViewBehavior |

<br />

*** ** * ** ***

Behavior which should be used by[View](https://developer.android.com/reference/android/view/View.html)s which can scroll vertically and support nested scrolling to automatically scroll any[AppBarLayout](https://developer.android.com/reference/android/support/design/widget/AppBarLayout)siblings.

## Summary

|                                                                                                                                                                                                          ### Public constructors                                                                                                                                                                                                          ||
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---|
| ` `[AppBarLayout.ScrollingViewBehavior](https://developer.android.com/reference/android/support/design/widget/AppBarLayout.ScrollingViewBehavior#AppBarLayout.ScrollingViewBehavior())`() `                                                                                                                                                                                                                                            |
| ` `[AppBarLayout.ScrollingViewBehavior](https://developer.android.com/reference/android/support/design/widget/AppBarLayout.ScrollingViewBehavior#AppBarLayout.ScrollingViewBehavior(android.content.Context, android.util.AttributeSet))`(`[Context](https://developer.android.com/reference/android/content/Context.html)` context, `[AttributeSet](https://developer.android.com/reference/android/util/AttributeSet.html)` attrs) ` |

|                                                                                                                                                                                                                                                                                                                                                                 ### Public methods                                                                                                                                                                                                                                                                                                                                                                  ||
|---------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ` int`        | ` `[getLeftAndRightOffset](https://developer.android.com/reference/android/support/design/widget/AppBarLayout.ScrollingViewBehavior#getLeftAndRightOffset())`() `                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| ` final int`  | ` `[getOverlayTop](https://developer.android.com/reference/android/support/design/widget/AppBarLayout.ScrollingViewBehavior#getOverlayTop())`() ` Returns the distance that this view should overlap any[AppBarLayout](https://developer.android.com/reference/android/support/design/widget/AppBarLayout).                                                                                                                                                                                                                                                                                                                                                                                                                          |
| ` int`        | ` `[getTopAndBottomOffset](https://developer.android.com/reference/android/support/design/widget/AppBarLayout.ScrollingViewBehavior#getTopAndBottomOffset())`() `                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| ` boolean`    | ` `[layoutDependsOn](https://developer.android.com/reference/android/support/design/widget/AppBarLayout.ScrollingViewBehavior#layoutDependsOn(android.support.design.widget.CoordinatorLayout, android.view.View, android.view.View))`(`[CoordinatorLayout](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout)` parent, `[View](https://developer.android.com/reference/android/view/View.html)` child, `[View](https://developer.android.com/reference/android/view/View.html)` dependency) ` Determine whether the supplied child view has another specific sibling view as a layout dependency.                                                                                             |
| ` boolean`    | ` `[onDependentViewChanged](https://developer.android.com/reference/android/support/design/widget/AppBarLayout.ScrollingViewBehavior#onDependentViewChanged(android.support.design.widget.CoordinatorLayout, android.view.View, android.view.View))`(`[CoordinatorLayout](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout)` parent, `[View](https://developer.android.com/reference/android/view/View.html)` child, `[View](https://developer.android.com/reference/android/view/View.html)` 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](https://developer.android.com/reference/android/support/design/widget/AppBarLayout.ScrollingViewBehavior#onLayoutChild(android.support.design.widget.CoordinatorLayout, V, int))`(`[CoordinatorLayout](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout)` parent, V child, int layoutDirection) ` Called when the parent CoordinatorLayout is about the lay out the given child view.                                                                                                                                                                                                                                                                                      |
| ` boolean`    | ` `[onMeasureChild](https://developer.android.com/reference/android/support/design/widget/AppBarLayout.ScrollingViewBehavior#onMeasureChild(android.support.design.widget.CoordinatorLayout, android.view.View, int, int, int, int))`(`[CoordinatorLayout](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout)` parent, `[View](https://developer.android.com/reference/android/view/View.html)` child, int parentWidthMeasureSpec, int widthUsed, int parentHeightMeasureSpec, int heightUsed) ` Called when the parent CoordinatorLayout is about to measure the given child view.                                                                                                            |
| ` boolean`    | ` `[onRequestChildRectangleOnScreen](https://developer.android.com/reference/android/support/design/widget/AppBarLayout.ScrollingViewBehavior#onRequestChildRectangleOnScreen(android.support.design.widget.CoordinatorLayout, android.view.View, android.graphics.Rect, boolean))`(`[CoordinatorLayout](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout)` parent, `[View](https://developer.android.com/reference/android/view/View.html)` child, `[Rect](https://developer.android.com/reference/android/graphics/Rect.html)` rectangle, boolean immediate) ` Called when a child of the view associated with this behavior wants a particular rectangle to be positioned onto the screen. |
| ` boolean`    | ` `[setLeftAndRightOffset](https://developer.android.com/reference/android/support/design/widget/AppBarLayout.ScrollingViewBehavior#setLeftAndRightOffset(int))`(int offset) `                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ` final void` | ` `[setOverlayTop](https://developer.android.com/reference/android/support/design/widget/AppBarLayout.ScrollingViewBehavior#setOverlayTop(int))`(int overlayTop) ` Set the distance that this view should overlap any[AppBarLayout](https://developer.android.com/reference/android/support/design/widget/AppBarLayout).                                                                                                                                                                                                                                                                                                                                                                                                             |
| ` boolean`    | ` `[setTopAndBottomOffset](https://developer.android.com/reference/android/support/design/widget/AppBarLayout.ScrollingViewBehavior#setTopAndBottomOffset(int))`(int offset) `                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |

|                                                                                                                                                                                                                  ### Protected methods                                                                                                                                                                                                                  ||
|---------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ` void` | ` `[layoutChild](https://developer.android.com/reference/android/support/design/widget/AppBarLayout.ScrollingViewBehavior#layoutChild(android.support.design.widget.CoordinatorLayout, android.view.View, int))`(`[CoordinatorLayout](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout)` parent, `[View](https://developer.android.com/reference/android/view/View.html)` child, int layoutDirection) ` |
| ` void` | ` `[layoutChild](https://developer.android.com/reference/android/support/design/widget/AppBarLayout.ScrollingViewBehavior#layoutChild(android.support.design.widget.CoordinatorLayout, V, int))`(`[CoordinatorLayout](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout)` parent, V child, int layoutDirection) `                                                                                        |

| ### Inherited methods |
|-----------------------|---|
| [![](https://developer.android.com/static/assets/images/styles/disclosure_down.png)](https://developer.android.com/reference/android/support/design/widget/AppBarLayout.ScrollingViewBehavior#)From class` `[android.support.design.widget.CoordinatorLayout.Behavior](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior)` ` |-------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` boolean`                                                                                                  | ` `[blocksInteractionBelow](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#blocksInteractionBelow(android.support.design.widget.CoordinatorLayout, V))`(`[CoordinatorLayout](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout)` parent, V child) ` Determine whether interaction with views behind the given child in the child order should be blocked.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | | ` boolean`                                                                                                  | ` `[getInsetDodgeRect](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#getInsetDodgeRect(android.support.design.widget.CoordinatorLayout, V, android.graphics.Rect))`(`[CoordinatorLayout](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout)` parent, V child, `[Rect](https://developer.android.com/reference/android/graphics/Rect.html)` rect) ` Called when a view is set to dodge view insets.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | | ` int`                                                                                                      | ` `[getScrimColor](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#getScrimColor(android.support.design.widget.CoordinatorLayout, V))`(`[CoordinatorLayout](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout)` parent, V child) ` Supply a scrim color that will be painted behind the associated child view.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | | ` float`                                                                                                    | ` `[getScrimOpacity](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#getScrimOpacity(android.support.design.widget.CoordinatorLayout, V))`(`[CoordinatorLayout](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout)` parent, V child) ` Determine the current opacity of the scrim behind a given child view A scrim may be used to indicate that the other elements beneath it are not currently interactive or actionable, drawing user focus and attention to the views above the scrim.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | | ` static Object`                                                                                            | ` `[getTag](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#getTag(android.view.View))`(`[View](https://developer.android.com/reference/android/view/View.html)` child) ` Get the behavior-specific tag object with the given child view.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | | ` boolean`                                                                                                  | ` `[layoutDependsOn](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#layoutDependsOn(android.support.design.widget.CoordinatorLayout, V, android.view.View))`(`[CoordinatorLayout](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout)` parent, V child, `[View](https://developer.android.com/reference/android/view/View.html)` dependency) ` Determine whether the supplied child view has another specific sibling view as a layout dependency.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | | ` `[WindowInsetsCompat](https://developer.android.com/reference/android/support/v4/view/WindowInsetsCompat) | ` `[onApplyWindowInsets](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#onApplyWindowInsets(android.support.design.widget.CoordinatorLayout, V, android.support.v4.view.WindowInsetsCompat))`(`[CoordinatorLayout](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout)` coordinatorLayout, V child, `[WindowInsetsCompat](https://developer.android.com/reference/android/support/v4/view/WindowInsetsCompat)` insets) ` Called when the window insets have changed.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | | ` void`                                                                                                     | ` `[onAttachedToLayoutParams](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#onAttachedToLayoutParams(android.support.design.widget.CoordinatorLayout.LayoutParams))`(`[CoordinatorLayout.LayoutParams](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.LayoutParams)` params) ` Called when the Behavior has been attached to a LayoutParams instance.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | | ` boolean`                                                                                                  | ` `[onDependentViewChanged](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#onDependentViewChanged(android.support.design.widget.CoordinatorLayout, V, android.view.View))`(`[CoordinatorLayout](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout)` parent, V child, `[View](https://developer.android.com/reference/android/view/View.html)` 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.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | | ` void`                                                                                                     | ` `[onDependentViewRemoved](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#onDependentViewRemoved(android.support.design.widget.CoordinatorLayout, V, android.view.View))`(`[CoordinatorLayout](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout)` parent, V child, `[View](https://developer.android.com/reference/android/view/View.html)` dependency) ` Respond to a child's dependent view being removed.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | | ` void`                                                                                                     | ` `[onDetachedFromLayoutParams](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#onDetachedFromLayoutParams())`() ` Called when the Behavior has been detached from its holding LayoutParams instance.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | | ` boolean`                                                                                                  | ` `[onInterceptTouchEvent](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#onInterceptTouchEvent(android.support.design.widget.CoordinatorLayout, V, android.view.MotionEvent))`(`[CoordinatorLayout](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout)` parent, V child, `[MotionEvent](https://developer.android.com/reference/android/view/MotionEvent.html)` ev) ` Respond to CoordinatorLayout touch events before they are dispatched to child views.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | | ` boolean`                                                                                                  | ` `[onLayoutChild](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#onLayoutChild(android.support.design.widget.CoordinatorLayout, V, int))`(`[CoordinatorLayout](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout)` parent, V child, int layoutDirection) ` Called when the parent CoordinatorLayout is about the lay out the given child view.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | | ` boolean`                                                                                                  | ` `[onMeasureChild](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#onMeasureChild(android.support.design.widget.CoordinatorLayout, V, int, int, int, int))`(`[CoordinatorLayout](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout)` parent, V child, int parentWidthMeasureSpec, int widthUsed, int parentHeightMeasureSpec, int heightUsed) ` Called when the parent CoordinatorLayout is about to measure the given child view.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | | ` boolean`                                                                                                  | ` `[onNestedFling](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#onNestedFling(android.support.design.widget.CoordinatorLayout, V, android.view.View, float, float, boolean))`(`[CoordinatorLayout](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout)` coordinatorLayout, V child, `[View](https://developer.android.com/reference/android/view/View.html)` target, float velocityX, float velocityY, boolean consumed) ` Called when a nested scrolling child is starting a fling or an action that would be a fling.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | | ` boolean`                                                                                                  | ` `[onNestedPreFling](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#onNestedPreFling(android.support.design.widget.CoordinatorLayout, V, android.view.View, float, float))`(`[CoordinatorLayout](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout)` coordinatorLayout, V child, `[View](https://developer.android.com/reference/android/view/View.html)` target, float velocityX, float velocityY) ` Called when a nested scrolling child is about to start a fling.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | | ` void`                                                                                                     | ` `[onNestedPreScroll](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#onNestedPreScroll(android.support.design.widget.CoordinatorLayout, V, android.view.View, int, int, int[]))`(`[CoordinatorLayout](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout)` coordinatorLayout, V child, `[View](https://developer.android.com/reference/android/view/View.html)` target, int dx, int dy, int[] consumed) ` *This method was deprecated in API level 26.1.0. You should now override[onNestedPreScroll(CoordinatorLayout, View, View, int, int, int[], int)](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#onNestedPreScroll(android.support.design.widget.CoordinatorLayout, V, android.view.View, int, int, int[], int)). This method will still continue to be called if the type is[TYPE_TOUCH](https://developer.android.com/reference/android/support/v4/view/ViewCompat#TYPE_TOUCH).*                                                                                                   | | ` void`                                                                                                     | ` `[onNestedPreScroll](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#onNestedPreScroll(android.support.design.widget.CoordinatorLayout, V, android.view.View, int, int, int[], int))`(`[CoordinatorLayout](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout)` coordinatorLayout, V child, `[View](https://developer.android.com/reference/android/view/View.html)` target, int dx, int dy, int[] consumed, int type) ` Called when a nested scroll in progress is about to update, before the target has consumed any of the scrolled distance.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | | ` void`                                                                                                     | ` `[onNestedScroll](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#onNestedScroll(android.support.design.widget.CoordinatorLayout, V, android.view.View, int, int, int, int))`(`[CoordinatorLayout](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout)` coordinatorLayout, V child, `[View](https://developer.android.com/reference/android/view/View.html)` target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed) ` *This method was deprecated in API level 26.1.0. You should now override[onNestedScroll(CoordinatorLayout, View, View, int, int, int, int, int)](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#onNestedScroll(android.support.design.widget.CoordinatorLayout, V, android.view.View, int, int, int, int, int)). This method will still continue to be called if the type is[TYPE_TOUCH](https://developer.android.com/reference/android/support/v4/view/ViewCompat#TYPE_TOUCH).*                                                                  | | ` void`                                                                                                     | ` `[onNestedScroll](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#onNestedScroll(android.support.design.widget.CoordinatorLayout, V, android.view.View, int, int, int, int, int))`(`[CoordinatorLayout](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout)` coordinatorLayout, V child, `[View](https://developer.android.com/reference/android/view/View.html)` target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed, int type) ` Called when a nested scroll in progress has updated and the target has scrolled or attempted to scroll.                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | | ` void`                                                                                                     | ` `[onNestedScrollAccepted](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#onNestedScrollAccepted(android.support.design.widget.CoordinatorLayout, V, android.view.View, android.view.View, int, int))`(`[CoordinatorLayout](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout)` coordinatorLayout, V child, `[View](https://developer.android.com/reference/android/view/View.html)` directTargetChild, `[View](https://developer.android.com/reference/android/view/View.html)` target, int axes, int type) ` Called when a nested scroll has been accepted by the CoordinatorLayout.                                                                                                                                                                                                                                                                                                                                                                                                                                                         | | ` void`                                                                                                     | ` `[onNestedScrollAccepted](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#onNestedScrollAccepted(android.support.design.widget.CoordinatorLayout, V, android.view.View, android.view.View, int))`(`[CoordinatorLayout](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout)` coordinatorLayout, V child, `[View](https://developer.android.com/reference/android/view/View.html)` directTargetChild, `[View](https://developer.android.com/reference/android/view/View.html)` target, int axes) ` *This method was deprecated in API level 26.1.0. You should now override[onNestedScrollAccepted(CoordinatorLayout, View, View, View, int, int)](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#onNestedScrollAccepted(android.support.design.widget.CoordinatorLayout, V, android.view.View, android.view.View, int, int)). This method will still continue to be called if the type is[TYPE_TOUCH](https://developer.android.com/reference/android/support/v4/view/ViewCompat#TYPE_TOUCH).* | | ` boolean`                                                                                                  | ` `[onRequestChildRectangleOnScreen](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#onRequestChildRectangleOnScreen(android.support.design.widget.CoordinatorLayout, V, android.graphics.Rect, boolean))`(`[CoordinatorLayout](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout)` coordinatorLayout, V child, `[Rect](https://developer.android.com/reference/android/graphics/Rect.html)` rectangle, boolean immediate) ` Called when a child of the view associated with this behavior wants a particular rectangle to be positioned onto the screen.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | | ` void`                                                                                                     | ` `[onRestoreInstanceState](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#onRestoreInstanceState(android.support.design.widget.CoordinatorLayout, V, android.os.Parcelable))`(`[CoordinatorLayout](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout)` parent, V child, `[Parcelable](https://developer.android.com/reference/android/os/Parcelable.html)` state) ` Hook allowing a behavior to re-apply a representation of its internal state that had previously been generated by[onSaveInstanceState(CoordinatorLayout, V)](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#onSaveInstanceState(android.support.design.widget.CoordinatorLayout, V)).                                                                                                                                                                                                                                                                                                                                    | | ` `[Parcelable](https://developer.android.com/reference/android/os/Parcelable.html)                         | ` `[onSaveInstanceState](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#onSaveInstanceState(android.support.design.widget.CoordinatorLayout, V))`(`[CoordinatorLayout](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout)` parent, V child) ` Hook allowing a behavior to generate a representation of its internal state that can later be used to create a new instance with that same state.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | | ` boolean`                                                                                                  | ` `[onStartNestedScroll](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#onStartNestedScroll(android.support.design.widget.CoordinatorLayout, V, android.view.View, android.view.View, int))`(`[CoordinatorLayout](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout)` coordinatorLayout, V child, `[View](https://developer.android.com/reference/android/view/View.html)` directTargetChild, `[View](https://developer.android.com/reference/android/view/View.html)` target, int axes) ` *This method was deprecated in API level 26.1.0. You should now override[onStartNestedScroll(CoordinatorLayout, View, View, View, int, int)](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#onStartNestedScroll(android.support.design.widget.CoordinatorLayout, V, android.view.View, android.view.View, int, int)). This method will still continue to be called if the type is[TYPE_TOUCH](https://developer.android.com/reference/android/support/v4/view/ViewCompat#TYPE_TOUCH).*             | | ` boolean`                                                                                                  | ` `[onStartNestedScroll](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#onStartNestedScroll(android.support.design.widget.CoordinatorLayout, V, android.view.View, android.view.View, int, int))`(`[CoordinatorLayout](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout)` coordinatorLayout, V child, `[View](https://developer.android.com/reference/android/view/View.html)` directTargetChild, `[View](https://developer.android.com/reference/android/view/View.html)` target, int axes, int type) ` Called when a descendant of the CoordinatorLayout attempts to initiate a nested scroll.                                                                                                                                                                                                                                                                                                                                                                                                                                               | | ` void`                                                                                                     | ` `[onStopNestedScroll](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#onStopNestedScroll(android.support.design.widget.CoordinatorLayout, V, android.view.View))`(`[CoordinatorLayout](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout)` coordinatorLayout, V child, `[View](https://developer.android.com/reference/android/view/View.html)` target) ` *This method was deprecated in API level 26.1.0. You should now override[onStopNestedScroll(CoordinatorLayout, View, View, int)](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#onStopNestedScroll(android.support.design.widget.CoordinatorLayout, V, android.view.View, int)). This method will still continue to be called if the type is[TYPE_TOUCH](https://developer.android.com/reference/android/support/v4/view/ViewCompat#TYPE_TOUCH).*                                                                                                                                                                                  | | ` void`                                                                                                     | ` `[onStopNestedScroll](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#onStopNestedScroll(android.support.design.widget.CoordinatorLayout, V, android.view.View, int))`(`[CoordinatorLayout](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout)` coordinatorLayout, V child, `[View](https://developer.android.com/reference/android/view/View.html)` target, int type) ` Called when a nested scroll has ended.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | | ` boolean`                                                                                                  | ` `[onTouchEvent](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#onTouchEvent(android.support.design.widget.CoordinatorLayout, V, android.view.MotionEvent))`(`[CoordinatorLayout](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout)` parent, V child, `[MotionEvent](https://developer.android.com/reference/android/view/MotionEvent.html)` ev) ` Respond to CoordinatorLayout touch events after this Behavior has started[intercepting](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#onInterceptTouchEvent(android.support.design.widget.CoordinatorLayout, V, android.view.MotionEvent))them.                                                                                                                                                                                                                                                                                                                                                                                         | | ` static void`                                                                                              | ` `[setTag](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#setTag(android.view.View, java.lang.Object))`(`[View](https://developer.android.com/reference/android/view/View.html)` child, Object tag) ` Associate a Behavior-specific tag object with the given child view.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | ||
| [![](https://developer.android.com/static/assets/images/styles/disclosure_down.png)](https://developer.android.com/reference/android/support/design/widget/AppBarLayout.ScrollingViewBehavior#)From class` java.lang.Object ` |-------------------|-------------------------------| | ` Object`         | ` clone() `                   | | ` boolean`        | ` equals(Object arg0) `       | | ` void`           | ` finalize() `                | | ` final Class<?>` | ` getClass() `                | | ` int`            | ` hashCode() `                | | ` final void`     | ` notify() `                  | | ` final void`     | ` notifyAll() `               | | ` String`         | ` toString() `                | | ` final void`     | ` wait(long arg0, int arg1) ` | | ` final void`     | ` wait(long arg0) `           | | ` final void`     | ` wait() `                    | ||

## Public constructors

### AppBarLayout.ScrollingViewBehavior

added in[version 22.2.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
AppBarLayout.ScrollingViewBehavior ()
```

<br />

<br />

### AppBarLayout.ScrollingViewBehavior

added in[version 22.2.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
AppBarLayout.ScrollingViewBehavior (Context context, 
                AttributeSet attrs)
```

<br />

<br />

|            Parameters            ||
|-----------|-----------------------|
| `context` | `Context` <br />      |
| `attrs`   | `AttributeSet` <br /> |

## Public methods

### getLeftAndRightOffset

added in[version 22.2.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
int getLeftAndRightOffset ()
```

<br />

<br />

|    Returns    ||
|-------|--------|
| `int` | <br /> |

### getOverlayTop

added in[version 22.2.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
int getOverlayTop ()
```

Returns the distance that this view should overlap any[AppBarLayout](https://developer.android.com/reference/android/support/design/widget/AppBarLayout).

<br />

|    Returns    ||
|-------|--------|
| `int` | <br /> |

### getTopAndBottomOffset

added in[version 22.2.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
int getTopAndBottomOffset ()
```

<br />

<br />

|    Returns    ||
|-------|--------|
| `int` | <br /> |

### layoutDependsOn

added in[version 22.2.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
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)](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#onDependentViewChanged(android.support.design.widget.CoordinatorLayout, V, android.view.View))when the dependency view's layout or position changes.

<br />

<br />

|                                  Parameters                                  ||
|--------------|----------------------------------------------------------------|
| `parent`     | `CoordinatorLayout`: the parent view of the given child <br /> |
| `child`      | `View`: the child view to test <br />                          |
| `dependency` | `View`: the proposed dependency of child <br />                |

|                                                Returns                                                ||
|-----------|--------------------------------------------------------------------------------------------|
| `boolean` | true if child's layout depends on the proposed dependency's layout, false otherwise <br /> |

### onDependentViewChanged

added in[version 22.2.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
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, View, View)](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#layoutDependsOn(android.support.design.widget.CoordinatorLayout, V, 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](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#onLayoutChild(android.support.design.widget.CoordinatorLayout, V, int)).`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.

<br />

<br />

|                                  Parameters                                  ||
|--------------|----------------------------------------------------------------|
| `parent`     | `CoordinatorLayout`: the parent view of the given child <br /> |
| `child`      | `View`: the child view to manipulate <br />                    |
| `dependency` | `View`: the dependent view that changed <br />                 |

|                                              Returns                                              ||
|-----------|----------------------------------------------------------------------------------------|
| `boolean` | true if the Behavior changed the child view's size or position, false otherwise <br /> |

### onLayoutChild

```
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.onLayoutChild](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout#onLayoutChild(android.view.View, int)).

If a Behavior implements[onDependentViewChanged(CoordinatorLayout, View, View)](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior#onDependentViewChanged(android.support.design.widget.CoordinatorLayout, V, 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.

<br />

<br />

|                                                                                                                                                                     Parameters                                                                                                                                                                     ||
|-------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `parent`          | `CoordinatorLayout`: the parent CoordinatorLayout <br />                                                                                                                                                                                                                                                                        |
| `child`           | `V`: child view to lay out <br />                                                                                                                                                                                                                                                                                               |
| `layoutDirection` | `int`: the resolved layout direction for the CoordinatorLayout, such as[LAYOUT_DIRECTION_LTR](https://developer.android.com/reference/android/support/v4/view/ViewCompat#LAYOUT_DIRECTION_LTR)or[LAYOUT_DIRECTION_RTL](https://developer.android.com/reference/android/support/v4/view/ViewCompat#LAYOUT_DIRECTION_RTL). <br /> |

|                                                       Returns                                                       ||
|-----------|----------------------------------------------------------------------------------------------------------|
| `boolean` | true if the Behavior performed layout of the child view, false to request default layout behavior <br /> |

### onMeasureChild

added in[version 22.2.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
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](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout#onMeasureChild(android.view.View, int, int, int, int)).

<br />

<br />

|                                                                    Parameters                                                                    ||
|---------------------------|-----------------------------------------------------------------------------------------------------------------------|
| `parent`                  | `CoordinatorLayout`: the parent CoordinatorLayout <br />                                                              |
| `child`                   | `View`: the child to measure <br />                                                                                   |
| `parentWidthMeasureSpec`  | `int`: the width requirements for this view <br />                                                                    |
| `widthUsed`               | `int`: extra space that has been used up by the parent horizontally (possibly by other children of the parent) <br /> |
| `parentHeightMeasureSpec` | `int`: the height requirements for this view <br />                                                                   |
| `heightUsed`              | `int`: extra space that has been used up by the parent vertically (possibly by other children of the parent) <br />   |

|                                                                Returns                                                                ||
|-----------|----------------------------------------------------------------------------------------------------------------------------|
| `boolean` | true if the Behavior measured the child view, false if the CoordinatorLayout should perform its default measurement <br /> |

### onRequestChildRectangleOnScreen

added in[version 26.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
boolean onRequestChildRectangleOnScreen (CoordinatorLayout parent, 
                View child, 
                Rect rectangle, 
                boolean immediate)
```

Called when a child of the view associated with this behavior wants a particular rectangle to be positioned onto the screen.

The contract for this method is the same as[requestChildRectangleOnScreen(View, Rect, boolean)](https://developer.android.com/reference/android/view/ViewParent.html#requestChildRectangleOnScreen(android.view.View, android.graphics.Rect, boolean)).

<br />

<br />

|                                                     Parameters                                                     ||
|-------------|-------------------------------------------------------------------------------------------------------|
| `parent`    | `CoordinatorLayout`: the CoordinatorLayout parent of the view this Behavior is associated with <br /> |
| `child`     | `View`: the child view of the CoordinatorLayout this Behavior is associated with <br />               |
| `rectangle` | `Rect`: The rectangle which the child wishes to be on the screen in the child's coordinates <br />    |
| `immediate` | `boolean`: true to forbid animated or delayed scrolling, false otherwise <br />                       |

|                          Returns                           ||
|-----------|-------------------------------------------------|
| `boolean` | true if the Behavior handled the request <br /> |

### setLeftAndRightOffset

added in[version 22.2.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
boolean setLeftAndRightOffset (int offset)
```

<br />

<br />

|       Parameters       ||
|----------|--------------|
| `offset` | `int` <br /> |

|      Returns      ||
|-----------|--------|
| `boolean` | <br /> |

### setOverlayTop

added in[version 22.2.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
void setOverlayTop (int overlayTop)
```

Set the distance that this view should overlap any[AppBarLayout](https://developer.android.com/reference/android/support/design/widget/AppBarLayout).

<br />

|                   Parameters                   ||
|--------------|----------------------------------|
| `overlayTop` | `int`: the distance in px <br /> |

### setTopAndBottomOffset

added in[version 22.2.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
boolean setTopAndBottomOffset (int offset)
```

<br />

<br />

|       Parameters       ||
|----------|--------------|
| `offset` | `int` <br /> |

|      Returns      ||
|-----------|--------|
| `boolean` | <br /> |

## Protected methods

### layoutChild

added in[version 23.4.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
void layoutChild (CoordinatorLayout parent, 
                View child, 
                int layoutDirection)
```

<br />

<br />

|                  Parameters                   ||
|-------------------|----------------------------|
| `parent`          | `CoordinatorLayout` <br /> |
| `child`           | `View` <br />              |
| `layoutDirection` | `int` <br />               |

### layoutChild

```
void layoutChild (CoordinatorLayout parent, 
                V child, 
                int layoutDirection)
```

<br />

<br />

|                  Parameters                   ||
|-------------------|----------------------------|
| `parent`          | `CoordinatorLayout` <br /> |
| `child`           | `V` <br />                 |
| `layoutDirection` | `int` <br />               |

-

  ## Annotations

  - [CoordinatorLayout.DefaultBehavior](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.DefaultBehavior)
-

  ## Interfaces

  - [AppBarLayout.OnOffsetChangedListener](https://developer.android.com/reference/android/support/design/widget/AppBarLayout.OnOffsetChangedListener)
  - [BaseTransientBottomBar.ContentViewCallback](https://developer.android.com/reference/android/support/design/widget/BaseTransientBottomBar.ContentViewCallback)
  - [BottomNavigationView.OnNavigationItemReselectedListener](https://developer.android.com/reference/android/support/design/widget/BottomNavigationView.OnNavigationItemReselectedListener)
  - [BottomNavigationView.OnNavigationItemSelectedListener](https://developer.android.com/reference/android/support/design/widget/BottomNavigationView.OnNavigationItemSelectedListener)
  - [CoordinatorLayout.AttachedBehavior](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.AttachedBehavior)
  - [NavigationView.OnNavigationItemSelectedListener](https://developer.android.com/reference/android/support/design/widget/NavigationView.OnNavigationItemSelectedListener)
  - [SwipeDismissBehavior.OnDismissListener](https://developer.android.com/reference/android/support/design/widget/SwipeDismissBehavior.OnDismissListener)
  - [TabLayout.OnTabSelectedListener](https://developer.android.com/reference/android/support/design/widget/TabLayout.OnTabSelectedListener)
-

  ## Classes

  - [AppBarLayout](https://developer.android.com/reference/android/support/design/widget/AppBarLayout)
  - [AppBarLayout.Behavior](https://developer.android.com/reference/android/support/design/widget/AppBarLayout.Behavior)
  - [AppBarLayout.Behavior.DragCallback](https://developer.android.com/reference/android/support/design/widget/AppBarLayout.Behavior.DragCallback)
  - [AppBarLayout.Behavior.SavedState](https://developer.android.com/reference/android/support/design/widget/AppBarLayout.Behavior.SavedState)
  - [AppBarLayout.LayoutParams](https://developer.android.com/reference/android/support/design/widget/AppBarLayout.LayoutParams)
  - [AppBarLayout.ScrollingViewBehavior](https://developer.android.com/reference/android/support/design/widget/AppBarLayout.ScrollingViewBehavior)
  - [BaseTransientBottomBar](https://developer.android.com/reference/android/support/design/widget/BaseTransientBottomBar)
  - [BaseTransientBottomBar.BaseCallback](https://developer.android.com/reference/android/support/design/widget/BaseTransientBottomBar.BaseCallback)
  - [BottomNavigationView](https://developer.android.com/reference/android/support/design/widget/BottomNavigationView)
  - [BottomSheetBehavior](https://developer.android.com/reference/android/support/design/widget/BottomSheetBehavior)
  - [BottomSheetBehavior.BottomSheetCallback](https://developer.android.com/reference/android/support/design/widget/BottomSheetBehavior.BottomSheetCallback)
  - [BottomSheetBehavior.SavedState](https://developer.android.com/reference/android/support/design/widget/BottomSheetBehavior.SavedState)
  - [BottomSheetDialog](https://developer.android.com/reference/android/support/design/widget/BottomSheetDialog)
  - [BottomSheetDialogFragment](https://developer.android.com/reference/android/support/design/widget/BottomSheetDialogFragment)
  - [CollapsingToolbarLayout](https://developer.android.com/reference/android/support/design/widget/CollapsingToolbarLayout)
  - [CollapsingToolbarLayout.LayoutParams](https://developer.android.com/reference/android/support/design/widget/CollapsingToolbarLayout.LayoutParams)
  - [CoordinatorLayout](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout)
  - [CoordinatorLayout.Behavior](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior)
  - [CoordinatorLayout.LayoutParams](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.LayoutParams)
  - [CoordinatorLayout.SavedState](https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.SavedState)
  - [FloatingActionButton](https://developer.android.com/reference/android/support/design/widget/FloatingActionButton)
  - [FloatingActionButton.Behavior](https://developer.android.com/reference/android/support/design/widget/FloatingActionButton.Behavior)
  - [FloatingActionButton.OnVisibilityChangedListener](https://developer.android.com/reference/android/support/design/widget/FloatingActionButton.OnVisibilityChangedListener)
  - [NavigationView](https://developer.android.com/reference/android/support/design/widget/NavigationView)
  - [NavigationView.SavedState](https://developer.android.com/reference/android/support/design/widget/NavigationView.SavedState)
  - [Snackbar](https://developer.android.com/reference/android/support/design/widget/Snackbar)
  - [Snackbar.Callback](https://developer.android.com/reference/android/support/design/widget/Snackbar.Callback)
  - [SwipeDismissBehavior](https://developer.android.com/reference/android/support/design/widget/SwipeDismissBehavior)
  - [TabItem](https://developer.android.com/reference/android/support/design/widget/TabItem)
  - [TabLayout](https://developer.android.com/reference/android/support/design/widget/TabLayout)
  - [TabLayout.Tab](https://developer.android.com/reference/android/support/design/widget/TabLayout.Tab)
  - [TabLayout.TabLayoutOnPageChangeListener](https://developer.android.com/reference/android/support/design/widget/TabLayout.TabLayoutOnPageChangeListener)
  - [TabLayout.ViewPagerOnTabSelectedListener](https://developer.android.com/reference/android/support/design/widget/TabLayout.ViewPagerOnTabSelectedListener)
  - [TextInputEditText](https://developer.android.com/reference/android/support/design/widget/TextInputEditText)
  - [TextInputLayout](https://developer.android.com/reference/android/support/design/widget/TextInputLayout)