# AppBarLayout.Behavior

[View Source](https://github.com/material-components/material-components-android/blob/1.14.0/lib/java/com/google/android/material/appbar/AppBarLayout.java)

*** ** * ** ***


```
public class AppBarLayout.Behavior extends AppBarLayout.BaseBehavior
```

<br />

|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) |||
| ↳ | [com.google.android.material.appbar.AppBarLayout.BaseBehavior](https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout.BaseBehavior) ||
|   | ↳ | [com.google.android.material.appbar.AppBarLayout.Behavior](https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout.Behavior) |

*** ** * ** ***

The default `https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout.Behavior` for `https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout`. Implements the necessary nested scroll handling with offsetting.

## Summary

| ### Nested types |
|---|
| `public abstract class https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout.Behavior.DragCallback extends https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout.BaseBehavior.BaseDragCallback` Callback to allow control over any `https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout` dragging. |

| ### Public constructors |
|---|
| `https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout.Behavior#Behavior()()` |
| `https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout.Behavior#Behavior(Context,AttributeSet)(Context context, AttributeSet attrs)` |

| ### Public methods |
|---|---|
| `int` | `https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout.Behavior#getLeftAndRightOffset()()` |
| `int` | `https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout.Behavior#getTopAndBottomOffset()()` |
| `boolean` | `https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout.Behavior#isHorizontalOffsetEnabled()()` |
| `boolean` | `https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout.Behavior#isVerticalOffsetEnabled()()` |
| `boolean` | `https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout.Behavior#onInterceptTouchEvent(CoordinatorLayout,V,MotionEvent)(CoordinatorLayout parent, V child, MotionEvent ev)` |
| `boolean` | `https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout.Behavior#onLayoutChild(CoordinatorLayout,V,int)(CoordinatorLayout parent, V child, int layoutDirection)` |
| `boolean` | `https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout.Behavior#onTouchEvent(CoordinatorLayout,V,MotionEvent)(CoordinatorLayout parent, V child, MotionEvent ev)` |
| `void` | `https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout.Behavior#setHorizontalOffsetEnabled(boolean)(boolean horizontalOffsetEnabled)` |
| `boolean` | `https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout.Behavior#setLeftAndRightOffset(int)(int offset)` |
| `boolean` | `https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout.Behavior#setTopAndBottomOffset(int)(int offset)` |
| `void` | `https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout.Behavior#setVerticalOffsetEnabled(boolean)(boolean verticalOffsetEnabled)` |

| ### Protected methods |
|---|---|
| `void` | `https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout.Behavior#layoutChild(CoordinatorLayout,V,int)(CoordinatorLayout parent, V child, int layoutDirection)` |

| ### Inherited methods |
|---|
| From [com.google.android.material.appbar.AppBarLayout.BaseBehavior](https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout.BaseBehavior) |---|---| | `boolean` | `https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout.BaseBehavior#onLayoutChild(CoordinatorLayout,T,int)(CoordinatorLayout parent, T abl, int layoutDirection)` | | `boolean` | `https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout.BaseBehavior#onMeasureChild(CoordinatorLayout,T,int,int,int,int)( CoordinatorLayout parent, T child, int parentWidthMeasureSpec, int widthUsed, int parentHeightMeasureSpec, int heightUsed )` | | `void` | `https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout.BaseBehavior#onNestedPreScroll(CoordinatorLayout,T,View,int,int,int[],int)( CoordinatorLayout coordinatorLayout, T child, View target, int dx, int dy, int[] consumed, int type )` | | `void` | `https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout.BaseBehavior#onNestedScroll(CoordinatorLayout,T,View,int,int,int,int,int,int[])( CoordinatorLayout coordinatorLayout, T child, View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed, int type, int[] consumed )` | | `void` | `https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout.BaseBehavior#onRestoreInstanceState(CoordinatorLayout,T,Parcelable)( CoordinatorLayout parent, T appBarLayout, Parcelable state )` | | `Parcelable` | `https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout.BaseBehavior#onSaveInstanceState(CoordinatorLayout,T)(CoordinatorLayout parent, T abl)` | | `boolean` | `https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout.BaseBehavior#onStartNestedScroll(CoordinatorLayout,T,View,View,int,int)( CoordinatorLayout parent, T child, View directTargetChild, View target, int nestedScrollAxes, int type )` | | `void` | `https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout.BaseBehavior#onStopNestedScroll(CoordinatorLayout,T,View,int)( CoordinatorLayout coordinatorLayout, T abl, View target, int type )` | | `void` | `https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout.BaseBehavior#setDragCallback(com.google.android.material.appbar.AppBarLayout.BaseBehavior.BaseDragCallback)(https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout.BaseBehavior.BaseDragCallback callback)` Set a callback to control any `https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout` dragging. | |

## Public constructors

### Behavior

```
public Behavior()
```

### Behavior

```
public Behavior(Context context, AttributeSet attrs)
```

## Public methods

### getLeftAndRightOffset

```
public int getLeftAndRightOffset()
```

### getTopAndBottomOffset

```
public int getTopAndBottomOffset()
```

### isHorizontalOffsetEnabled

```
public boolean isHorizontalOffsetEnabled()
```

### isVerticalOffsetEnabled

```
public boolean isVerticalOffsetEnabled()
```

### onInterceptTouchEvent

```
public boolean onInterceptTouchEvent(CoordinatorLayout parent, V child, MotionEvent ev)
```

### onLayoutChild

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

### onTouchEvent

```
public boolean onTouchEvent(CoordinatorLayout parent, V child, MotionEvent ev)
```

### setHorizontalOffsetEnabled

```
public void setHorizontalOffsetEnabled(boolean horizontalOffsetEnabled)
```

### setLeftAndRightOffset

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

### setTopAndBottomOffset

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

### setVerticalOffsetEnabled

```
public void setVerticalOffsetEnabled(boolean verticalOffsetEnabled)
```

## Protected methods

### layoutChild

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