# AppBarLayout.BaseBehavior

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

*** ** * ** ***


```
protected class AppBarLayout.BaseBehavior<T extends AppBarLayout>
```

<br />

Known direct subclasses [AppBarLayout.Behavior](https://developer.android.com/reference/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`. |

*** ** * ** ***

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.BaseBehavior.BaseDragCallback<T extends https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout>` Callback to allow control over any `https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout` dragging. |
| `protected class https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout.BaseBehavior.SavedState` A Parcelable implementation for `https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout`. |

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

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

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

## Public constructors

### BaseBehavior

```
public BaseBehavior()
```

### BaseBehavior

```
public BaseBehavior(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, T abl, int layoutDirection)
```

### onMeasureChild

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

### onNestedPreScroll

```
public void onNestedPreScroll(
    CoordinatorLayout coordinatorLayout,
    T child,
    View target,
    int dx,
    int dy,
    int[] consumed,
    int type
)
```

### onNestedScroll

```
public void onNestedScroll(
    CoordinatorLayout coordinatorLayout,
    T child,
    View target,
    int dxConsumed,
    int dyConsumed,
    int dxUnconsumed,
    int dyUnconsumed,
    int type,
    int[] consumed
)
```

### onRestoreInstanceState

```
public void onRestoreInstanceState(
    CoordinatorLayout parent,
    T appBarLayout,
    Parcelable state
)
```

### onSaveInstanceState

```
public Parcelable onSaveInstanceState(CoordinatorLayout parent, T abl)
```

### onStartNestedScroll

```
public boolean onStartNestedScroll(
    CoordinatorLayout parent,
    T child,
    View directTargetChild,
    View target,
    int nestedScrollAxes,
    int type
)
```

### onStopNestedScroll

```
public void onStopNestedScroll(
    CoordinatorLayout coordinatorLayout,
    T abl,
    View target,
    int type
)
```

### onTouchEvent

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

### setDragCallback

```
public void setDragCallback(AppBarLayout.BaseBehavior.BaseDragCallback callback)
```

Set a callback to control any `https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout` dragging.

| Parameters |
|---|---|
| `https://developer.android.com/reference/com/google/android/material/appbar/AppBarLayout.BaseBehavior.BaseDragCallback callback` | the callback to use, or `null` to use the default behavior. |

### 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)
```