Android APIs
public class

NumberPicker

extends LinearLayout
java.lang.Object
   ↳ android.view.View
     ↳ android.view.ViewGroup
       ↳ android.widget.LinearLayout
         ↳ android.widget.NumberPicker

Class Overview

A widget that enables the user to select a number from a predefined range. There are two flavors of this widget and which one is presented to the user depends on the current theme.

  • If the current theme is derived from Theme the widget presents the current value as an editable input field with an increment button above and a decrement button below. Long pressing the buttons allows for a quick change of the current value. Tapping on the input field allows to type in a desired value.
  • If the current theme is derived from Theme_Holo or Theme_Holo_Light the widget presents the current value as an editable input field with a lesser value above and a greater value below. Tapping on the lesser or greater value selects it by animating the number axis up or down to make the chosen value current. Flinging up or down allows for multiple increments or decrements of the current value. Long pressing on the lesser and greater values also allows for a quick change of the current value. Tapping on the current value allows to type in a desired value.

For an example of using this widget, see TimePicker.

Summary

Nested Classes
interface NumberPicker.Formatter Interface used to format current value into a string for presentation. 
interface NumberPicker.OnScrollListener Interface to listen for the picker scroll state. 
interface NumberPicker.OnValueChangeListener Interface to listen for changes of the current value. 
[Expand]
Inherited XML Attributes
From class android.widget.LinearLayout
From class android.view.ViewGroup
From class android.view.View
[Expand]
Inherited Constants
From class android.widget.LinearLayout
From class android.view.ViewGroup
From class android.view.View
[Expand]
Inherited Fields
From class android.view.View
Public Constructors
NumberPicker(Context context)
Create a new number picker.
NumberPicker(Context context, AttributeSet attrs)
Create a new number picker.
NumberPicker(Context context, AttributeSet attrs, int defStyleAttr)
Create a new number picker
NumberPicker(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)
Create a new number picker
Public Methods
void computeScroll()
Called by a parent to request that a child update its values for mScrollX and mScrollY if necessary.
boolean dispatchKeyEvent(KeyEvent event)
Dispatch a key event to the next view on the focus path.
boolean dispatchTouchEvent(MotionEvent event)
Pass the touch screen motion event down to the target view, or this view if it is the target.
boolean dispatchTrackballEvent(MotionEvent event)
Pass a trackball motion event down to the focused view.
AccessibilityNodeProvider getAccessibilityNodeProvider()
Gets the provider for managing a virtual view hierarchy rooted at this View and reported to AccessibilityServices that explore the window content.
String[] getDisplayedValues()
Gets the values to be displayed instead of string values.
int getMaxValue()
Returns the max value of the picker.
int getMinValue()
Returns the min value of the picker.
int getSolidColor()
Override this if your view is known to always be drawn on top of a solid color background, and needs to draw fading edges.
int getValue()
Returns the value of the picker.
boolean getWrapSelectorWheel()
Gets whether the selector wheel wraps when reaching the min/max value.
void jumpDrawablesToCurrentState()
Call Drawable.jumpToCurrentState() on all Drawable objects associated with this view.
boolean onInterceptTouchEvent(MotionEvent event)
Implement this method to intercept all touch screen motion events.
boolean onTouchEvent(MotionEvent event)
Implement this method to handle touch screen motion events.
boolean performClick()
Call this view's OnClickListener, if it is defined.
boolean performLongClick()
Call this view's OnLongClickListener, if it is defined.
void scrollBy(int x, int y)
Move the scrolled position of your view.
void setDisplayedValues(String[] displayedValues)
Sets the values to be displayed.
void setEnabled(boolean enabled)
Set the enabled state of this view.
void setFormatter(NumberPicker.Formatter formatter)
Set the formatter to be used for formatting the current value.
void setMaxValue(int maxValue)
Sets the max value of the picker.
void setMinValue(int minValue)
Sets the min value of the picker.
void setOnLongPressUpdateInterval(long intervalMillis)
Sets the speed at which the numbers be incremented and decremented when the up and down buttons are long pressed respectively.
void setOnScrollListener(NumberPicker.OnScrollListener onScrollListener)
Set listener to be notified for scroll state changes.
void setOnValueChangedListener(NumberPicker.OnValueChangeListener onValueChangedListener)
Sets the listener to be notified on change of the current value.
void setValue(int value)
Set the current value for the number picker.
void setWrapSelectorWheel(boolean wrapSelectorWheel)
Sets whether the selector wheel shown during flinging/scrolling should wrap around the getMinValue() and getMaxValue() values.
Protected Methods
int computeVerticalScrollExtent()

Compute the vertical extent of the vertical scrollbar's thumb within the vertical range.

int computeVerticalScrollOffset()

Compute the vertical offset of the vertical scrollbar's thumb within the horizontal range.

int computeVerticalScrollRange()

Compute the vertical range that the vertical scrollbar represents.

boolean dispatchHoverEvent(MotionEvent event)
Dispatch a hover event.
void drawableStateChanged()
This function is called whenever the state of the view changes in such a way that it impacts the state of drawables being shown.
float getBottomFadingEdgeStrength()
Returns the strength, or intensity, of the bottom faded edge.
float getTopFadingEdgeStrength()
Returns the strength, or intensity, of the top faded edge.
void onDetachedFromWindow()
This is called when the view is detached from a window.
void onDraw(Canvas canvas)
Implement this to do your drawing.
void onLayout(boolean changed, int left, int top, int right, int bottom)
Called from layout when this view should assign a size and position to each of its children.
void onMeasure(int widthMeasureSpec, int heightMeasureSpec)

Measure the view and its content to determine the measured width and the measured height.

[Expand]
Inherited Methods
From class android.widget.LinearLayout
From class android.view.ViewGroup
From class android.view.View
From class java.lang.Object
From interface android.view.ViewParent
From interface android.view.ViewManager
From interface android.graphics.drawable.Drawable.Callback
From interface android.view.KeyEvent.Callback
From interface android.view.accessibility.AccessibilityEventSource

Public Constructors

public NumberPicker (Context context)

Added in API level 11

Create a new number picker.

Parameters
context The application environment.

public NumberPicker (Context context, AttributeSet attrs)

Added in API level 11

Create a new number picker.

Parameters
context The application environment.
attrs A collection of attributes.

public NumberPicker (Context context, AttributeSet attrs, int defStyleAttr)

Added in API level 11

Create a new number picker

Parameters
context the application environment.
attrs a collection of attributes.
defStyleAttr An attribute in the current theme that contains a reference to a style resource that supplies default values for the view. Can be 0 to not look for defaults.

public NumberPicker (Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)

Added in API level 21

Create a new number picker

Parameters
context the application environment.
attrs a collection of attributes.
defStyleAttr An attribute in the current theme that contains a reference to a style resource that supplies default values for the view. Can be 0 to not look for defaults.
defStyleRes A resource identifier of a style resource that supplies default values for the view, used only if defStyleAttr is 0 or can not be found in the theme. Can be 0 to not look for defaults.

Public Methods

public void computeScroll ()

Added in API level 11

Called by a parent to request that a child update its values for mScrollX and mScrollY if necessary. This will typically be done if the child is animating a scroll using a Scroller object.

public boolean dispatchKeyEvent (KeyEvent event)

Added in API level 11

Dispatch a key event to the next view on the focus path. This path runs from the top of the view tree down to the currently focused view. If this view has focus, it will dispatch to itself. Otherwise it will dispatch the next node down the focus path. This method also fires any key listeners.

Parameters
event The key event to be dispatched.
Returns
  • True if the event was handled, false otherwise.

public boolean dispatchTouchEvent (MotionEvent event)

Added in API level 11

Pass the touch screen motion event down to the target view, or this view if it is the target.

Parameters
event The motion event to be dispatched.
Returns
  • True if the event was handled by the view, false otherwise.

public boolean dispatchTrackballEvent (MotionEvent event)

Added in API level 11

Pass a trackball motion event down to the focused view.

Parameters
event The motion event to be dispatched.
Returns
  • True if the event was handled by the view, false otherwise.

public AccessibilityNodeProvider getAccessibilityNodeProvider ()

Added in API level 16

Gets the provider for managing a virtual view hierarchy rooted at this View and reported to AccessibilityServices that explore the window content.

If this method returns an instance, this instance is responsible for managing AccessibilityNodeInfos describing the virtual sub-tree rooted at this View including the one representing the View itself. Similarly the returned instance is responsible for performing accessibility actions on any virtual view or the root view itself.

If an View.AccessibilityDelegate has been specified via calling setAccessibilityDelegate(AccessibilityDelegate) its getAccessibilityNodeProvider(View) is responsible for handling this call.

Returns
  • The provider.

public String[] getDisplayedValues ()

Added in API level 11

Gets the values to be displayed instead of string values.

Returns
  • The displayed values.

public int getMaxValue ()

Added in API level 11

Returns the max value of the picker.

Returns
  • The max value.

public int getMinValue ()

Added in API level 11

Returns the min value of the picker.

Returns
  • The min value

public int getSolidColor ()

Added in API level 11

Override this if your view is known to always be drawn on top of a solid color background, and needs to draw fading edges. Returning a non-zero color enables the view system to optimize the drawing of the fading edges. If you do return a non-zero color, the alpha should be set to 0xFF.

Returns
  • The known solid color background for this view, or 0 if the color may vary

public int getValue ()

Added in API level 11

Returns the value of the picker.

Returns
  • The value.

public boolean getWrapSelectorWheel ()

Added in API level 11

Gets whether the selector wheel wraps when reaching the min/max value.

Returns
  • True if the selector wheel wraps.

public void jumpDrawablesToCurrentState ()

Added in API level 11

Call Drawable.jumpToCurrentState() on all Drawable objects associated with this view.

Also calls jumpToCurrentState() if there is a StateListAnimator attached to this view.

public boolean onInterceptTouchEvent (MotionEvent event)

Added in API level 11

Implement this method to intercept all touch screen motion events. This allows you to watch events as they are dispatched to your children, and take ownership of the current gesture at any point.

Using this function takes some care, as it has a fairly complicated interaction with View.onTouchEvent(MotionEvent), and using it requires implementing that method as well as this one in the correct way. Events will be received in the following order:

  1. You will receive the down event here.
  2. The down event will be handled either by a child of this view group, or given to your own onTouchEvent() method to handle; this means you should implement onTouchEvent() to return true, so you will continue to see the rest of the gesture (instead of looking for a parent view to handle it). Also, by returning true from onTouchEvent(), you will not receive any following events in onInterceptTouchEvent() and all touch processing must happen in onTouchEvent() like normal.
  3. For as long as you return false from this function, each following event (up to and including the final up) will be delivered first here and then to the target's onTouchEvent().
  4. If you return true from here, you will not receive any following events: the target view will receive the same event but with the action ACTION_CANCEL, and all further events will be delivered to your onTouchEvent() method and no longer appear here.

Parameters
event The motion event being dispatched down the hierarchy.
Returns
  • Return true to steal motion events from the children and have them dispatched to this ViewGroup through onTouchEvent(). The current target will receive an ACTION_CANCEL event, and no further messages will be delivered here.

public boolean onTouchEvent (MotionEvent event)

Added in API level 11

Implement this method to handle touch screen motion events.

If this method is used to detect click actions, it is recommended that the actions be performed by implementing and calling performClick(). This will ensure consistent system behavior, including:

  • obeying click sound preferences
  • dispatching OnClickListener calls
  • handling ACTION_CLICK when accessibility features are enabled

Parameters
event The motion event.
Returns
  • True if the event was handled, false otherwise.

public boolean performClick ()

Added in API level 11

Call this view's OnClickListener, if it is defined. Performs all normal actions associated with clicking: reporting accessibility event, playing a sound, etc.

Returns
  • True there was an assigned OnClickListener that was called, false otherwise is returned.

public boolean performLongClick ()

Added in API level 11

Call this view's OnLongClickListener, if it is defined. Invokes the context menu if the OnLongClickListener did not consume the event.

Returns
  • True if one of the above receivers consumed the event, false otherwise.

public void scrollBy (int x, int y)

Added in API level 11

Move the scrolled position of your view. This will cause a call to onScrollChanged(int, int, int, int) and the view will be invalidated.

Parameters
x the amount of pixels to scroll by horizontally
y the amount of pixels to scroll by vertically

public void setDisplayedValues (String[] displayedValues)

Added in API level 11

Sets the values to be displayed.

Parameters
displayedValues The displayed values. Note: The length of the displayed values array must be equal to the range of selectable numbers which is equal to getMaxValue() - getMinValue() + 1.

public void setEnabled (boolean enabled)

Added in API level 11

Set the enabled state of this view. The interpretation of the enabled state varies by subclass.

Parameters
enabled True if this view is enabled, false otherwise.

public void setFormatter (NumberPicker.Formatter formatter)

Added in API level 11

Set the formatter to be used for formatting the current value.

Note: If you have provided alternative values for the values this formatter is never invoked.

Parameters
formatter The formatter object. If formatter is null, valueOf(int) will be used.

public void setMaxValue (int maxValue)

Added in API level 11

Sets the max value of the picker.

Parameters
maxValue The max value inclusive. Note: The length of the displayed values array set via setDisplayedValues(String[]) must be equal to the range of selectable numbers which is equal to getMaxValue() - getMinValue() + 1.

public void setMinValue (int minValue)

Added in API level 11

Sets the min value of the picker.

Parameters
minValue The min value inclusive. Note: The length of the displayed values array set via setDisplayedValues(String[]) must be equal to the range of selectable numbers which is equal to getMaxValue() - getMinValue() + 1.

public void setOnLongPressUpdateInterval (long intervalMillis)

Added in API level 11

Sets the speed at which the numbers be incremented and decremented when the up and down buttons are long pressed respectively.

The default value is 300 ms.

Parameters
intervalMillis The speed (in milliseconds) at which the numbers will be incremented and decremented.

public void setOnScrollListener (NumberPicker.OnScrollListener onScrollListener)

Added in API level 11

Set listener to be notified for scroll state changes.

Parameters
onScrollListener The listener.

public void setOnValueChangedListener (NumberPicker.OnValueChangeListener onValueChangedListener)

Added in API level 11

Sets the listener to be notified on change of the current value.

Parameters
onValueChangedListener The listener.

public void setValue (int value)

Added in API level 11

Set the current value for the number picker.

If the argument is less than the getMinValue() and getWrapSelectorWheel() is false the current value is set to the getMinValue() value.

If the argument is less than the getMinValue() and getWrapSelectorWheel() is true the current value is set to the getMaxValue() value.

If the argument is less than the getMaxValue() and getWrapSelectorWheel() is false the current value is set to the getMaxValue() value.

If the argument is less than the getMaxValue() and getWrapSelectorWheel() is true the current value is set to the getMinValue() value.

Parameters
value The current value.

public void setWrapSelectorWheel (boolean wrapSelectorWheel)

Added in API level 11

Sets whether the selector wheel shown during flinging/scrolling should wrap around the getMinValue() and getMaxValue() values.

By default if the range (max - min) is more than the number of items shown on the selector wheel the selector wheel wrapping is enabled.

Note: If the number of items, i.e. the range ( getMaxValue() - getMinValue()) is less than the number of items shown on the selector wheel, the selector wheel will not wrap. Hence, in such a case calling this method is a NOP.

Parameters
wrapSelectorWheel Whether to wrap.

Protected Methods

protected int computeVerticalScrollExtent ()

Added in API level 11

Compute the vertical extent of the vertical scrollbar's thumb within the vertical range. This value is used to compute the length of the thumb within the scrollbar's track.

The range is expressed in arbitrary units that must be the same as the units used by computeVerticalScrollRange() and computeVerticalScrollOffset().

The default extent is the drawing height of this view.

Returns
  • the vertical extent of the scrollbar's thumb

protected int computeVerticalScrollOffset ()

Added in API level 11

Compute the vertical offset of the vertical scrollbar's thumb within the horizontal range. This value is used to compute the position of the thumb within the scrollbar's track.

The range is expressed in arbitrary units that must be the same as the units used by computeVerticalScrollRange() and computeVerticalScrollExtent().

The default offset is the scroll offset of this view.

Returns
  • the vertical offset of the scrollbar's thumb

protected int computeVerticalScrollRange ()

Added in API level 11

Compute the vertical range that the vertical scrollbar represents.

The range is expressed in arbitrary units that must be the same as the units used by computeVerticalScrollExtent() and computeVerticalScrollOffset().

Returns
  • the total vertical range represented by the vertical scrollbar

    The default range is the drawing height of this view.

protected boolean dispatchHoverEvent (MotionEvent event)

Added in API level 14

Dispatch a hover event.

Do not call this method directly. Call dispatchGenericMotionEvent(MotionEvent) instead.

Parameters
event The motion event to be dispatched.
Returns
  • True if the event was handled by the view, false otherwise.

protected void drawableStateChanged ()

Added in API level 11

This function is called whenever the state of the view changes in such a way that it impacts the state of drawables being shown.

If the View has a StateListAnimator, it will also be called to run necessary state change animations.

Be sure to call through to the superclass when overriding this function.

protected float getBottomFadingEdgeStrength ()

Added in API level 11

Returns the strength, or intensity, of the bottom faded edge. The strength is a value between 0.0 (no fade) and 1.0 (full fade). The default implementation returns 0.0 or 1.0 but no value in between. Subclasses should override this method to provide a smoother fade transition when scrolling occurs.

Returns
  • the intensity of the bottom fade as a float between 0.0f and 1.0f

protected float getTopFadingEdgeStrength ()

Added in API level 11

Returns the strength, or intensity, of the top faded edge. The strength is a value between 0.0 (no fade) and 1.0 (full fade). The default implementation returns 0.0 or 1.0 but no value in between. Subclasses should override this method to provide a smoother fade transition when scrolling occurs.

Returns
  • the intensity of the top fade as a float between 0.0f and 1.0f

protected void onDetachedFromWindow ()

Added in API level 11

This is called when the view is detached from a window. At this point it no longer has a surface for drawing.

protected void onDraw (Canvas canvas)

Added in API level 11

Implement this to do your drawing.

Parameters
canvas the canvas on which the background will be drawn

protected void onLayout (boolean changed, int left, int top, int right, int bottom)

Added in API level 11

Called from layout when this view should assign a size and position to each of its children. Derived classes with children should override this method and call layout on each of their children.

Parameters
changed This is a new size or position for this view
left Left position, relative to parent
top Top position, relative to parent
right Right position, relative to parent
bottom Bottom position, relative to parent

protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec)

Added in API level 11

Measure the view and its content to determine the measured width and the measured height. This method is invoked by measure(int, int) and should be overridden by subclasses to provide accurate and efficient measurement of their contents.

CONTRACT: When overriding this method, you must call setMeasuredDimension(int, int) to store the measured width and height of this view. Failure to do so will trigger an IllegalStateException, thrown by measure(int, int). Calling the superclass' onMeasure(int, int) is a valid use.

The base class implementation of measure defaults to the background size, unless a larger size is allowed by the MeasureSpec. Subclasses should override onMeasure(int, int) to provide better measurements of their content.

If this method is overridden, it is the subclass's responsibility to make sure the measured height and width are at least the view's minimum height and width (getSuggestedMinimumHeight() and getSuggestedMinimumWidth()).

Parameters
widthMeasureSpec horizontal space requirements as imposed by the parent. The requirements are encoded with View.MeasureSpec.
heightMeasureSpec vertical space requirements as imposed by the parent. The requirements are encoded with View.MeasureSpec.