Google is committed to advancing racial equity for Black communities. See how.

NestedScrollView

public class NestedScrollView
extends FrameLayout implements NestedScrollingParent3, NestedScrollingChild3, ScrollingView

java.lang.Object
   ↳ android.view.View
     ↳ android.view.ViewGroup
       ↳ android.widget.FrameLayout
         ↳ androidx.core.widget.NestedScrollView


NestedScrollView is just like ScrollView, but it supports acting as both a nested scrolling parent and child on both new and old versions of Android. Nested scrolling is enabled by default.

Summary

Nested classes

interface NestedScrollView.OnScrollChangeListener

Interface definition for a callback to be invoked when the scroll X or Y positions of a view change. 

Inherited constants

Inherited fields

Public constructors

NestedScrollView(Context context)
NestedScrollView(Context context, AttributeSet attrs)
NestedScrollView(Context context, AttributeSet attrs, int defStyleAttr)

Public methods

void addView(View child, int index)
void addView(View child, ViewGroup.LayoutParams params)
void addView(View child, int index, ViewGroup.LayoutParams params)
void addView(View child)
boolean arrowScroll(int direction)

Handle scrolling in response to an up or down arrow click.

void computeScroll()
boolean dispatchKeyEvent(KeyEvent event)
boolean dispatchNestedFling(float velocityX, float velocityY, boolean consumed)
boolean dispatchNestedPreFling(float velocityX, float velocityY)
boolean dispatchNestedPreScroll(int dx, int dy, int[] consumed, int[] offsetInWindow)
boolean dispatchNestedPreScroll(int dx, int dy, int[] consumed, int[] offsetInWindow, int type)

Dispatch one step of a nested scroll in progress before this view consumes any portion of it.

boolean dispatchNestedScroll(int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed, int[] offsetInWindow, int type)

Dispatch one step of a nested scroll in progress.

void dispatchNestedScroll(int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed, int[] offsetInWindow, int type, int[] consumed)

Dispatch one step of a nested scroll in progress.

boolean dispatchNestedScroll(int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed, int[] offsetInWindow)
void draw(Canvas canvas)
boolean executeKeyEvent(KeyEvent event)

You can call this function yourself to have the scroll view perform scrolling from a key event, just as if the event had been dispatched to it by the view hierarchy.

void fling(int velocityY)

Fling the scroll view

boolean fullScroll(int direction)

Handles scrolling in response to a "home/end" shortcut press.

int getMaxScrollAmount()
int getNestedScrollAxes()
boolean hasNestedScrollingParent()
boolean hasNestedScrollingParent(int type)

Returns true if this view has a nested scrolling parent for the given input type.

boolean isFillViewport()

Indicates whether this ScrollView's content is stretched to fill the viewport.

boolean isNestedScrollingEnabled()
boolean isSmoothScrollingEnabled()
void onAttachedToWindow()
boolean onGenericMotionEvent(MotionEvent event)
boolean onInterceptTouchEvent(MotionEvent ev)
boolean onNestedFling(View target, float velocityX, float velocityY, boolean consumed)
boolean onNestedPreFling(View target, float velocityX, float velocityY)
void onNestedPreScroll(View target, int dx, int dy, int[] consumed)
void onNestedPreScroll(View target, int dx, int dy, int[] consumed, int type)

React to a nested scroll in progress before the target view consumes a portion of the scroll.

void onNestedScroll(View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed, int type)

React to a nested scroll in progress.

void onNestedScroll(View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed, int type, int[] consumed)

React to a nested scroll in progress.

void onNestedScroll(View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed)
void onNestedScrollAccepted(View child, View target, int axes, int type)

React to the successful claiming of a nested scroll operation.

void onNestedScrollAccepted(View child, View target, int nestedScrollAxes)
boolean onStartNestedScroll(View child, View target, int axes, int type)

React to a descendant view initiating a nestable scroll operation, claiming the nested scroll operation if appropriate.

boolean onStartNestedScroll(View child, View target, int nestedScrollAxes)
void onStopNestedScroll(View target)
void onStopNestedScroll(View target, int type)

React to a nested scroll operation ending.

boolean onTouchEvent(MotionEvent ev)
boolean pageScroll(int direction)

Handles scrolling in response to a "page up/down" shortcut press.

void requestChildFocus(View child, View focused)
boolean requestChildRectangleOnScreen(View child, Rect rectangle, boolean immediate)
void requestDisallowInterceptTouchEvent(boolean disallowIntercept)
void requestLayout()
void scrollTo(int x, int y)

This version also clamps the scrolling to the bounds of our child.

void setFillViewport(boolean fillViewport)

Set whether this ScrollView should stretch its content height to fill the viewport or not.

void setNestedScrollingEnabled(boolean enabled)
void setOnScrollChangeListener(NestedScrollView.OnScrollChangeListener l)

Register a callback to be invoked when the scroll X or Y positions of this view change.

void setSmoothScrollingEnabled(boolean smoothScrollingEnabled)

Set whether arrow scrolling will animate its transition.

boolean shouldDelayChildPressedState()
final void smoothScrollBy(int dx, int dy)

Like View.scrollBy(int, int), but scroll smoothly instead of immediately.

final void smoothScrollBy(int dx, int dy, int scrollDurationMs)

Like View.scrollBy(int, int), but scroll smoothly instead of immediately.

final void smoothScrollTo(int x, int y, int scrollDurationMs)

Like scrollTo(int, int), but scroll smoothly instead of immediately.

final void smoothScrollTo(int x, int y)

Like scrollTo(int, int), but scroll smoothly instead of immediately.

boolean startNestedScroll(int axes, int type)

Begin a nestable scroll operation along the given axes, for the given input type.

boolean startNestedScroll(int axes)
void stopNestedScroll(int type)

Stop a nested scroll in progress for the given input type.

void stopNestedScroll()

Protected methods

int computeScrollDeltaToGetChildRectOnScreen(Rect rect)

Compute the amount to scroll in the Y direction in order to get a rectangle completely on the screen (or, if taller than the screen, at least the first screen size chunk of it).

float getBottomFadingEdgeStrength()
float getTopFadingEdgeStrength()
void measureChild(View child, int parentWidthMeasureSpec, int parentHeightMeasureSpec)
void measureChildWithMargins(View child, int parentWidthMeasureSpec, int widthUsed, int parentHeightMeasureSpec, int heightUsed)
void onLayout(boolean changed, int l, int t, int r, int b)
void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY)
boolean onRequestFocusInDescendants(int direction, Rect previouslyFocusedRect)

When looking for focus in children of a scroll view, need to be a little more careful not to give focus to something that is scrolled off screen.

void onRestoreInstanceState(Parcelable state)
Parcelable onSaveInstanceState()
void onScrollChanged(int l, int t, int oldl, int oldt)
void onSizeChanged(int w, int h, int oldw, int oldh)

Inherited methods

Public constructors

NestedScrollView

public NestedScrollView (Context context)

Parameters