Added in API level 11

NumberPicker


open class NumberPicker : LinearLayout
kotlin.Any
   ↳ android.view.View
   ↳ android.view.ViewGroup
   ↳ android.widget.LinearLayout
   ↳ android.widget.NumberPicker

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 android.R.style#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 android.R.style#Theme_Holo or android.R.style#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.
  • If the current theme is derived from android.R.style#Theme_Material the widget presents the current value as a scrolling vertical selector with the selected value in the center and the previous and following numbers above and below, separated by a divider. The value is changed by flinging vertically. The thickness of the divider can be changed by using the android.R.attr#selectionDividerHeight attribute and the color of the divider can be changed by using the android.R.attr#colorControlNormal attribute.

For an example of using this widget, see android.widget.TimePicker.

Summary

Nested classes
abstract

Interface used to format current value into a string for presentation.

abstract

Interface to listen for the picker scroll state.

abstract

Interface to listen for changes of the current value.

Inherited XML attributes
Inherited constants
Public constructors
NumberPicker(context: Context!)

Create a new number picker.

NumberPicker(context: Context!, attrs: AttributeSet!)

Create a new number picker.

NumberPicker(context: Context!, attrs: AttributeSet!, defStyleAttr: Int)

Create a new number picker

NumberPicker(context: Context!, attrs: AttributeSet!, defStyleAttr: Int, defStyleRes: Int)

Create a new number picker

Public methods
open Unit

Called by a parent to request that a child update its values for mScrollX and mScrollY if necessary.

open Boolean

Dispatch a key event to the next view on the focus path.

open Boolean

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

open Boolean

Pass a trackball motion event down to the focused view.

open AccessibilityNodeProvider!

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

open Array<String!>!

Gets the values to be displayed instead of string values.

open Int

Returns the max value of the picker.

open Int

Returns the min value of the picker.

open Int

Retrieve the height for the divider that separates the currently selected value from the others.

open Int

Override this if your view is known to always be drawn on top of a solid color background, and needs to draw fading edges.

open Int

open Float

open Int

Returns the value of the picker.

open Boolean

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

open Unit

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

open Boolean

Implement this method to intercept all touch screen motion events.

open Boolean

Implement this method to handle pointer events.

open Boolean

Call this view's OnClickListener, if it is defined.

open Boolean

Calls this view's OnLongClickListener, if it is defined.

open Unit
scrollBy(x: Int, y: Int)

Move the scrolled position of your view.

open Unit
setDisplayedValues(displayedValues: Array<String!>!)

Sets the values to be displayed.

open Unit
setEnabled(enabled: Boolean)

Set the enabled state of this view.

open Unit

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

open Unit
setMaxValue(maxValue: Int)

Sets the max value of the picker.

open Unit
setMinValue(minValue: Int)

Sets the min value of the picker.

open Unit

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

open Unit

Set listener to be notified for scroll state changes.

open Unit

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

open Unit

Set the height for the divider that separates the currently selected value from the others.

open Unit
setTextColor(color: Int)

Sets the text color for all the states (normal, selected, focused) to be the given color.

open Unit

Sets the text size to the given value.

open Unit
setValue(value: Int)

Set the current value for the number picker.

open Unit
setWrapSelectorWheel(wrapSelectorWheel: Boolean)

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

Protected methods
open Int

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

open Int

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

open Int

Compute the vertical range that the vertical scrollbar represents.

open Boolean

Dispatch a hover event.

open Unit

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

open Float

Returns the strength, or intensity, of the bottom faded edge.

open Float

Returns the strength, or intensity, of the top faded edge.

open Unit

This is called when the view is detached from a window.

open Unit
onDraw(canvas: Canvas)

Implement this to do your drawing.

open Unit
onLayout(changed: Boolean, left: Int, top: Int, right: Int, bottom: Int)

Called from layout when this view should assign a size and position to each of its children.

open Unit
onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int)

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

Inherited functions
Inherited properties

Public constructors

NumberPicker

Added in API level 11
NumberPicker(context: Context!)

Create a new number picker.

Parameters
context Context!: The application environment.

NumberPicker

Added in API level 11
NumberPicker(
    context: Context!,
    attrs: AttributeSet!)

Create a new number picker.

Parameters
context Context!: The application environment.
attrs AttributeSet!: A collection of attributes.

NumberPicker

Added in API level 11
NumberPicker(
    context: Context!,
    attrs: AttributeSet!,
    defStyleAttr: Int)

Create a new number picker

Parameters
context Context!: the application environment.
attrs AttributeSet!: a collection of attributes.
defStyleAttr Int: 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.

NumberPicker

Added in API level 21
NumberPicker(
    context: Context!,
    attrs: AttributeSet!,
    defStyleAttr: Int,
    defStyleRes: Int)

Create a new number picker

Parameters
context Context!: the application environment.
attrs AttributeSet!: a collection of attributes.
defStyleAttr Int: 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 Int: 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

computeScroll

Added in API level 11
open fun computeScroll(): Unit

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.

dispatchKeyEvent

Added in API level 11
open fun dispatchKeyEvent(event: KeyEvent!): Boolean

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 KeyEvent!: The key event to be dispatched.
Return
Boolean True if the event was handled, false otherwise.

dispatchTouchEvent

Added in API level 11
open fun dispatchTouchEvent(event: MotionEvent!): Boolean

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

Parameters
event MotionEvent!: The motion event to be dispatched.
Return
Boolean True if the event was handled by the view, false otherwise.

dispatchTrackballEvent

Added in API level 11
open fun dispatchTrackballEvent(event: MotionEvent!): Boolean

Pass a trackball motion event down to the focused view.

Parameters
event MotionEvent!: The motion event to be dispatched.
Return
Boolean True if the event was handled by the view, false otherwise.

getAccessibilityNodeProvider

Added in API level 16
open fun getAccessibilityNodeProvider(): AccessibilityNodeProvider!

Gets the provider for managing a virtual view hierarchy rooted at this View and reported to android.accessibilityservice.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 AccessibilityDelegate has been specified via calling setAccessibilityDelegate(android.view.View.AccessibilityDelegate) its AccessibilityDelegate.getAccessibilityNodeProvider(View) is responsible for handling this call.

Return
AccessibilityNodeProvider! The provider.

getDisplayedValues

Added in API level 11
open fun getDisplayedValues(): Array<String!>!

Gets the values to be displayed instead of string values.

Return
Array<String!>! The displayed values.

getMaxValue

Added in API level 11
open fun getMaxValue(): Int

Returns the max value of the picker.

Return
Int The max value.

getMinValue

Added in API level 11
open fun getMinValue(): Int

Returns the min value of the picker.

Return
Int The min value

getSelectionDividerHeight

Added in API level 29
open fun getSelectionDividerHeight(): Int

Retrieve the height for the divider that separates the currently selected value from the others.
The units of this value are pixels.

Return
Int The height of the divider.
The units of this value are pixels.

getSolidColor

Added in API level 11
open fun getSolidColor(): Int

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.

Return
Int The known solid color background for this view, or 0 if the color may vary

getTextColor

Added in API level 29
open fun getTextColor(): Int
Return
Int the text color.

getTextSize

Added in API level 29
open fun getTextSize(): Float
Return
Float the size (in pixels) of the text size in this NumberPicker.
Value is 0.0f or greater

getValue

Added in API level 11
open fun getValue(): Int

Returns the value of the picker.

Return
Int The value.

getWrapSelectorWheel

Added in API level 11
open fun getWrapSelectorWheel(): Boolean

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

Return
Boolean True if the selector wheel wraps.

jumpDrawablesToCurrentState

Added in API level 11
open fun jumpDrawablesToCurrentState(): Unit

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

Also calls StateListAnimator.jumpToCurrentState() if there is a StateListAnimator attached to this view.
If you override this method you must call through to the superclass implementation. If you override this method you must call through to the superclass implementation.

onInterceptTouchEvent

Added in API level 11
open fun onInterceptTouchEvent(event: MotionEvent!): Boolean

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 MotionEvent.ACTION_CANCEL, and all further events will be delivered to your onTouchEvent() method and no longer appear here.
Parameters
ev The motion event being dispatched down the hierarchy.
Return
Boolean 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.

onTouchEvent

Added in API level 11
open fun onTouchEvent(event: MotionEvent!): Boolean

Implement this method to handle pointer events.

This method is called to handle motion events where pointers are down on the view. For example, this could include touchscreen touches, stylus touches, or click-and-drag events from a mouse. However, it is not called for motion events that do not involve pointers being down, such as hover events or mouse scroll wheel movements.

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 MotionEvent!: The motion event.
Return
Boolean True if the event was handled, false otherwise.

performClick

Added in API level 11
open fun performClick(): Boolean

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

Return
Boolean True there was an assigned OnClickListener that was called, false otherwise is returned.

performLongClick

Added in API level 11
open fun performLongClick(): Boolean

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

Return
Boolean true if one of the above receivers consumed the event, false otherwise

scrollBy

Added in API level 11
open fun scrollBy(
    x: Int,
    y: Int
): Unit

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 Int: the amount of pixels to scroll by horizontally
y Int: the amount of pixels to scroll by vertically

setDisplayedValues

Added in API level 11
open fun setDisplayedValues(displayedValues: Array<String!>!): Unit

Sets the values to be displayed.

Parameters
displayedValues Array<String!>!: 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.

setEnabled

Added in API level 11
open fun setEnabled(enabled: Boolean): Unit

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

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

setFormatter

Added in API level 11
open fun setFormatter(formatter: NumberPicker.Formatter!): Unit

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 NumberPicker.Formatter!: The formatter object. If formatter is null, String.valueOf(int) will be used.

setMaxValue

Added in API level 11
open fun setMaxValue(maxValue: Int): Unit

Sets the max value of the picker.

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

setMinValue

Added in API level 11
open fun setMinValue(minValue: Int): Unit

Sets the min value of the picker.

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

setOnLongPressUpdateInterval

Added in API level 11
open fun setOnLongPressUpdateInterval(intervalMillis: Long): Unit

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 Long: The speed (in milliseconds) at which the numbers will be incremented and decremented.

setOnScrollListener

Added in API level 11
open fun setOnScrollListener(onScrollListener: NumberPicker.OnScrollListener!): Unit

Set listener to be notified for scroll state changes.

Parameters
onScrollListener NumberPicker.OnScrollListener!: The listener.

setOnValueChangedListener

Added in API level 11
open fun setOnValueChangedListener(onValueChangedListener: NumberPicker.OnValueChangeListener!): Unit

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

Parameters
onValueChangedListener NumberPicker.OnValueChangeListener!: The listener.

setSelectionDividerHeight

Added in API level 29
open fun setSelectionDividerHeight(height: Int): Unit

Set the height for the divider that separates the currently selected value from the others.

Parameters
height Int: The height to be set.
Value is 0 or greater.
The units of this value are pixels.

setTextColor

Added in API level 29
open fun setTextColor(color: Int): Unit

Sets the text color for all the states (normal, selected, focused) to be the given color.

Parameters
color Int: A color value in the form 0xAARRGGBB.

setTextSize

Added in API level 29
open fun setTextSize(size: Float): Unit

Sets the text size to the given value. This value must be > 0

Parameters
size Float: The size in pixel units.
Value is 0.0f or greater

setValue

Added in API level 11
open fun setValue(value: Int): Unit

Set the current value for the number picker.

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

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

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

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

Parameters
value Int: The current value.

setWrapSelectorWheel

Added in API level 11
open fun setWrapSelectorWheel(wrapSelectorWheel: Boolean): Unit

Sets whether the selector wheel shown during flinging/scrolling should wrap around the NumberPicker.getMinValue() and NumberPicker.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 Boolean: Whether to wrap.

Protected methods

computeVerticalScrollExtent

Added in API level 11
protected open fun computeVerticalScrollExtent(): Int

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.

Return
Int the vertical extent of the scrollbar's thumb

computeVerticalScrollOffset

Added in API level 11
protected open fun computeVerticalScrollOffset(): Int

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.

Return
Int the vertical offset of the scrollbar's thumb

computeVerticalScrollRange

Added in API level 11
protected open fun computeVerticalScrollRange(): Int

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().

Return
Int the total vertical range represented by the vertical scrollbar

The default range is the drawing height of this view.

dispatchHoverEvent

Added in API level 14
protected open fun dispatchHoverEvent(event: MotionEvent!): Boolean

Dispatch a hover event.

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

Parameters
event MotionEvent!: The motion event to be dispatched.
Return
Boolean True if the event was handled by the view, false otherwise.

drawableStateChanged

Added in API level 11
protected open fun drawableStateChanged(): Unit

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.
If you override this method you must call through to the superclass implementation. If you override this method you must call through to the superclass implementation.

getBottomFadingEdgeStrength

Added in API level 11
protected open fun getBottomFadingEdgeStrength(): Float

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.

Return
Float the intensity of the bottom fade as a float between 0.0f and 1.0f

getTopFadingEdgeStrength

Added in API level 11
protected open fun getTopFadingEdgeStrength(): Float

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.

Return
Float the intensity of the top fade as a float between 0.0f and 1.0f

onDetachedFromWindow

Added in API level 11
protected open fun onDetachedFromWindow(): Unit

This is called when the view is detached from a window. At this point it no longer has a surface for drawing.
If you override this method you must call through to the superclass implementation.

onDraw

Added in API level 11
protected open fun onDraw(canvas: Canvas): Unit

Implement this to do your drawing.

Parameters
canvas Canvas: the canvas on which the background will be drawn.
This value cannot be null.

onLayout

Added in API level 11
protected open fun onLayout(
    changed: Boolean,
    left: Int,
    top: Int,
    right: Int,
    bottom: Int
): Unit

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 Boolean: This is a new size or position for this view
left Int: Left position, relative to parent
top Int: Top position, relative to parent
right Int: Right position, relative to parent
bottom Int: Bottom position, relative to parent

onMeasure

Added in API level 11
protected open fun onMeasure(
    widthMeasureSpec: Int,
    heightMeasureSpec: Int
): Unit

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 Int: horizontal space requirements as imposed by the parent. The requirements are encoded with android.view.View.MeasureSpec.
heightMeasureSpec Int: vertical space requirements as imposed by the parent. The requirements are encoded with android.view.View.MeasureSpec.