Spinner


public class Spinner
extends AbsSpinner implements DialogInterface.OnClickListener

java.lang.Object
   ↳ android.view.View
     ↳ android.view.ViewGroup
       ↳ android.widget.AdapterView<android.widget.SpinnerAdapter>
         ↳ android.widget.AbsSpinner
           ↳ android.widget.Spinner


A view that displays one child at a time and lets the user pick among them. The items in the Spinner come from the Adapter associated with this view.

See the Spinners guide.

Summary

XML attributes

android:dropDownHorizontalOffset Amount of pixels by which the drop down should be offset horizontally. 
android:dropDownSelector List selector to use for spinnerMode="dropdown" display. 
android:dropDownVerticalOffset Amount of pixels by which the drop down should be offset vertically. 
android:dropDownWidth Width of the dropdown in spinnerMode="dropdown". 
android:gravity Gravity setting for positioning the currently selected item. 
android:popupBackground Background drawable to use for the dropdown in spinnerMode="dropdown". 
android:prompt The prompt to display when the spinner's dialog is shown. 
android:spinnerMode Display mode for spinner options. 

Inherited XML attributes

Constants

int MODE_DIALOG

Use a dialog window for selecting spinner options.

int MODE_DROPDOWN

Use a dropdown anchored to the Spinner for selecting spinner options.

Inherited constants

Inherited fields

Public constructors

Spinner(Context context)

Constructs a new spinner with the given context's theme.

Spinner(Context context, AttributeSet attrs)

Constructs a new spinner with the given context's theme and the supplied attribute set.

Spinner(Context context, AttributeSet attrs, int defStyleAttr)

Constructs a new spinner with the given context's theme, the supplied attribute set, and default style attribute.

Spinner(Context context, AttributeSet attrs, int defStyleAttr, int mode)

Constructs a new spinner with the given context's theme, the supplied attribute set, and default style attribute.

Spinner(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes, int mode)

Constructs a new spinner with the given context's theme, the supplied attribute set, and default styles.

Spinner(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes, int mode, Resources.Theme popupTheme)

Constructs a new spinner with the given context, the supplied attribute set, default styles, popup mode (one of MODE_DIALOG or MODE_DROPDOWN), and the theme against which the popup should be inflated.

Spinner(Context context, int mode)

Constructs a new spinner with the given context's theme and the supplied mode of displaying choices.

Public methods

CharSequence getAccessibilityClassName()

Return the class name of this object to be used for accessibility purposes.

int getBaseline()

Return the offset of the widget's text baseline from the widget's top boundary.

int getDropDownHorizontalOffset()

Get the configured horizontal offset in pixels for the spinner's popup window of choices.

int getDropDownVerticalOffset()

Get the configured vertical offset in pixels for the spinner's popup window of choices.

int getDropDownWidth()

Get the configured width of the spinner's popup window of choices in pixels.

int getGravity()

Describes how the selected item view is positioned.

Drawable getPopupBackground()

Get the background drawable for the spinner's popup window of choices.

Context getPopupContext()
CharSequence getPrompt()
void onClick(DialogInterface dialog, int which)

This method will be invoked when a button in the dialog is clicked.

PointerIcon onResolvePointerIcon(MotionEvent event, int pointerIndex)

Resolve the pointer icon that should be used for specified pointer in the motion event.

void onRestoreInstanceState(Parcelable state)

Hook allowing a view to re-apply a representation of its internal state that had previously been generated by onSaveInstanceState().

Parcelable onSaveInstanceState()

Hook allowing a view to generate a representation of its internal state that can later be used to create a new instance with that same state.

boolean onTouchEvent(MotionEvent event)

Implement this method to handle pointer events.

boolean performClick()

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

void setAdapter(SpinnerAdapter adapter)

Sets the SpinnerAdapter used to provide the data which backs this Spinner.

void setDropDownHorizontalOffset(int pixels)

Set a horizontal offset in pixels for the spinner's popup window of choices.

void setDropDownVerticalOffset(int pixels)

Set a vertical offset in pixels for the spinner's popup window of choices.

void setDropDownWidth(int pixels)

Set the width of the spinner's popup window of choices in pixels.

void setEnabled(boolean enabled)

Set the enabled state of this view.

void setGravity(int gravity)

Describes how the selected item view is positioned.

void setOnItemClickListener(AdapterView.OnItemClickListener l)

A spinner does not support item click events.

void setPopupBackgroundDrawable(Drawable background)

Set the background drawable for the spinner's popup window of choices.

void setPopupBackgroundResource(int resId)

Set the background drawable for the spinner's popup window of choices.

void setPrompt(CharSequence prompt)

Sets the prompt to display when the dialog is shown.

void setPromptId(int promptId)

Sets the prompt to display when the dialog is shown.

Protected methods

void onDetachedFromWindow()

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

void onLayout(boolean changed, int l, int t, int r, int b)

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.

Inherited methods

XML attributes

android:dropDownHorizontalOffset

Amount of pixels by which the drop down should be offset horizontally.

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), in (inches), and mm (millimeters).

Related methods:

android:dropDownSelector

List selector to use for spinnerMode="dropdown" display.

May be a reference to another resource, in the form "@[+][package:]type/name" or a theme attribute in the form "?[package:]type/name".

May be a color value, in the form of "#rgb", "#argb", "#rrggbb", or "#aarrggbb".

android:dropDownVerticalOffset

Amount of pixels by which the drop down should be offset vertically.

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), in (inches), and mm (millimeters).

Related methods:

android:dropDownWidth

Width of the dropdown in spinnerMode="dropdown".

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), in (inches), and mm (millimeters).

Must be one of the following constant values.

ConstantValueDescription
fill_parentffffffffThe dropdown should fill the width of the screen. This constant is deprecated starting from API Level 8 and is replaced by match_parent.
match_parentffffffffThe dropdown should fit the width of the screen. Introduced in API Level 8.
wrap_contentfffffffeThe dropdown should fit the width of its anchor.

Related methods:

android:gravity

Gravity setting for positioning the currently selected item.

Must be one or more (separated by '|') of the following constant values.

ConstantValueDescription
bottom50Push object to the bottom of its container, not changing its size.
center11Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
center_horizontal1Place object in the horizontal center of its container, not changing its size.
center_vertical10Place object in the vertical center of its container, not changing its size.
clip_horizontal8Additional option that can be set to have the left and/or right edges of the child clipped to its container's bounds. The clip will be based on the horizontal gravity: a left gravity will clip the right edge, a right gravity will clip the left edge, and neither will clip both edges.
clip_vertical80Additional option that can be set to have the top and/or bottom edges of the child clipped to its container's bounds. The clip will be based on the vertical gravity: a top gravity will clip the bottom edge, a bottom gravity will clip the top edge, and neither will clip both edges.
end800005Push object to the end of its container, not changing its size.
fill77Grow the horizontal and vertical size of the object if needed so it completely fills its container.
fill_horizontal7Grow the horizontal size of the object if needed so it completely fills its container.
fill_vertical70Grow the vertical size of the object if needed so it completely fills its container.
left3Push object to the left of its container, not changing its size.
right5Push object to the right of its container, not changing its size.
start800003Push object to the beginning of its container, not changing its size.
top30Push object to the top of its container, not changing its size.

Related methods:

android:popupBackground

Background drawable to use for the dropdown in spinnerMode="dropdown".

May be a reference to another resource, in the form "@[+][package:]type/name" or a theme attribute in the form "?[package:]type/name".

May be a color value, in the form of "#rgb", "#argb", "#rrggbb", or "#aarrggbb".

Related methods:

android:prompt

The prompt to display when the spinner's dialog is shown.

May be a reference to another resource, in the form "@[+][package:]type/name" or a theme attribute in the form "?[package:]type/name".

android:spinnerMode

Display mode for spinner options.

Must be one of the following constant values.

ConstantValueDescription
dialog0Spinner options will be presented to the user as a dialog window.
dropdown1Spinner options will be presented to the user as an inline dropdown anchored to the spinner widget itself.

Constants

MODE_DIALOG

Added in API level 11
public static final int MODE_DIALOG

Use a dialog window for selecting spinner options.

Constant Value: 0 (0x00000000)

MODE_DROPDOWN

Added in API level 11
public static final int MODE_DROPDOWN

Use a dropdown anchored to the Spinner for selecting spinner options.

Constant Value: 1 (0x00000001)

Public constructors

Spinner

Added in API level 1
public Spinner (Context context)

Constructs a new spinner with the given context's theme.

Parameters
context Context: The Context the view is running in, through which it can access the current theme, resources, etc.

Spinner

Added in API level 1
public Spinner (Context context, 
                AttributeSet attrs)

Constructs a new spinner with the given context's theme and the supplied attribute set.

Parameters
context Context: The Context the view is running in, through which it can access the current theme, resources, etc.

attrs AttributeSet: The attributes of the XML tag that is inflating the view.

Spinner

Added in API level 1
public Spinner (Context context, 
                AttributeSet attrs, 
                int defStyleAttr)

Constructs a new spinner with the given context's theme, the supplied attribute set, and default style attribute.

Parameters
context Context: The Context the view is running in, through which it can access the current theme, resources, etc.

attrs AttributeSet: The attributes of the XML tag that is inflating the view.

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.

Spinner

Added in API level 11
public Spinner (Context context, 
                AttributeSet attrs, 
                int defStyleAttr, 
                int mode)

Constructs a new spinner with the given context's theme, the supplied attribute set, and default style attribute. mode may be one of MODE_DIALOG or MODE_DROPDOWN and determines how the user will select choices from the spinner.

Parameters
context Context: The Context the view is running in, through which it can access the current theme, resources, etc.

attrs AttributeSet: The attributes of the XML tag that is inflating the view.

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.

mode int: Constant describing how the user will select choices from the spinner.

Spinner

Added in API level 21
public Spinner (Context context, 
                AttributeSet attrs, 
                int defStyleAttr, 
                int defStyleRes, 
                int mode)

Constructs a new spinner with the given context's theme, the supplied attribute set, and default styles. mode may be one of MODE_DIALOG or MODE_DROPDOWN and determines how the user will select choices from the spinner.

Parameters
context Context: The Context the view is running in, through which it can access the current theme, resources, etc.

attrs AttributeSet: The attributes of the XML tag that is inflating the view.

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.

mode int: Constant describing how the user will select choices from the spinner.

Spinner

Added in API level 23
public Spinner (Context context, 
                AttributeSet attrs, 
                int defStyleAttr, 
                int defStyleRes, 
                int mode, 
                Resources.Theme popupTheme)

Constructs a new spinner with the given context, the supplied attribute set, default styles, popup mode (one of MODE_DIALOG or MODE_DROPDOWN), and the theme against which the popup should be inflated.

Parameters
context Context: The context against which the view is inflated, which provides access to the current theme, resources, etc.

attrs AttributeSet: The attributes of the XML tag that is inflating the view.

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.

mode int: Constant describing how the user will select choices from the spinner.

popupTheme Resources.Theme: The theme against which the dialog or dropdown popup should be inflated. May be null to use the view theme. If set, this will override any value specified by R.styleable.Spinner_popupTheme.

Spinner

Added in API level 11
public Spinner (Context context, 
                int mode)

Constructs a new spinner with the given context's theme and the supplied mode of displaying choices. mode may be one of MODE_DIALOG or MODE_DROPDOWN.

Parameters
context Context: The Context the view is running in, through which it can access the current theme, resources, etc.

mode int: Constant describing how the user will select choices from the spinner.

Public methods

getAccessibilityClassName

Added in API level 23
public CharSequence getAccessibilityClassName ()

Return the class name of this object to be used for accessibility purposes. Subclasses should only override this if they are implementing something that should be seen as a completely new class of view when used by accessibility, unrelated to the class it is deriving from. This is used to fill in AccessibilityNodeInfo.setClassName.

Returns
CharSequence

getBaseline

Added in API level 1
public int getBaseline ()

Return the offset of the widget's text baseline from the widget's top boundary. If this widget does not support baseline alignment, this method returns -1.

Returns
int the offset of the baseline within the widget's bounds or -1 if baseline alignment is not supported

getDropDownHorizontalOffset

Added in API level 16
public int getDropDownHorizontalOffset ()

Get the configured horizontal offset in pixels for the spinner's popup window of choices. Only valid in MODE_DROPDOWN; other modes will return 0.

Related XML Attributes:

Returns
int Horizontal offset in pixels

getDropDownVerticalOffset

Added in API level 16
public int getDropDownVerticalOffset ()

Get the configured vertical offset in pixels for the spinner's popup window of choices. Only valid in MODE_DROPDOWN; other modes will return 0.

Related XML Attributes:

Returns
int Vertical offset in pixels

getDropDownWidth

Added in API level 16
public int getDropDownWidth ()

Get the configured width of the spinner's popup window of choices in pixels. The returned value may also be ViewGroup.LayoutParams.MATCH_PARENT meaning the popup window will match the width of the Spinner itself, or ViewGroup.LayoutParams.WRAP_CONTENT to wrap to the measured size of contained dropdown list items.

Related XML Attributes:

Returns
int Width in pixels, WRAP_CONTENT, or MATCH_PARENT

getGravity

Added in API level 16
public int getGravity ()

Describes how the selected item view is positioned. The default is determined by the current theme.

Returns
int A Gravity value

getPopupBackground

Added in API level 16
public Drawable getPopupBackground ()

Get the background drawable for the spinner's popup window of choices. Only valid in MODE_DROPDOWN; other modes will return null.

Related XML Attributes:

Returns
Drawable background Background drawable

getPopupContext

Added in API level 23
public Context getPopupContext ()

Returns
Context the context used to inflate the Spinner's popup or dialog window

getPrompt

Added in API level 1
public CharSequence getPrompt ()

Returns
CharSequence The prompt to display when the dialog is shown

onClick

Added in API level 1
public void onClick (DialogInterface dialog, 
                int which)

This method will be invoked when a button in the dialog is clicked.

Parameters
dialog DialogInterface: the dialog that received the click

which int: the button that was clicked (ex. DialogInterface.BUTTON_POSITIVE) or the position of the item clicked

onResolvePointerIcon

Added in API level 24
public PointerIcon onResolvePointerIcon (MotionEvent event, 
                int pointerIndex)

Resolve the pointer icon that should be used for specified pointer in the motion event. The default implementation will resolve the pointer icon to one set using setPointerIcon(android.view.PointerIcon) for mouse devices. Subclasses may override this to customize the icon for the given pointer. For example, to always show the PointerIcon.TYPE_HANDWRITING icon for a stylus pointer, the event can be resolved in the following way:

 @Override
 public PointerIcon onResolvePointerIcon(MotionEvent event, int pointerIndex) {
     final int toolType = event.getToolType(pointerIndex);
     if (!event.isFromSource(InputDevice.SOURCE_MOUSE)
             && event.isFromSource(InputDevice.SOURCE_STYLUS)
             && (toolType == MotionEvent.TOOL_TYPE_STYLUS
                     || toolType == MotionEvent.TOOL_TYPE_ERASER)) {
         // Show this pointer icon only if this pointer is a stylus.
         return PointerIcon.getSystemIcon(mContext, PointerIcon.TYPE_HANDWRITING);
     }
     // Use the default logic for determining the pointer icon for other non-stylus pointers,
     // like for the mouse cursor.
     return super.onResolvePointerIcon(event, pointerIndex);
 }
 

Parameters
event MotionEvent: The MotionEvent that requires a pointer icon to be resolved for one of pointers.

pointerIndex int: The index of the pointer in event for which to retrieve the PointerIcon. This will be between 0 and MotionEvent.getPointerCount().

Returns
PointerIcon the pointer icon to use for specified pointer, or null if a pointer icon is not specified and the default icon should be used.

onRestoreInstanceState

Added in API level 1
public void onRestoreInstanceState (Parcelable state)

Hook allowing a view to re-apply a representation of its internal state that had previously been generated by onSaveInstanceState(). This function will never be called with a null state.
If you override this method you must call through to the superclass implementation.

Parameters
state Parcelable: The frozen state that had previously been returned by onSaveInstanceState().

onSaveInstanceState

Added in API level 1
public Parcelable onSaveInstanceState ()

Hook allowing a view to generate a representation of its internal state that can later be used to create a new instance with that same state. This state should only contain information that is not persistent or can not be reconstructed later. For example, you will never store your current position on screen because that will be computed again when a new instance of the view is placed in its view hierarchy.

Some examples of things you may store here: the current cursor position in a text view (but usually not the text itself since that is stored in a content provider or other persistent storage), the currently selected item in a list view.
If you override this method you must call through to the superclass implementation.

Returns
Parcelable Returns a Parcelable object containing the view's current dynamic state, or null if there is nothing interesting to save.

onTouchEvent

Added in API level 1
public boolean onTouchEvent (MotionEvent event)

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.

Returns
boolean True if the event was handled, false otherwise.

performClick

Added in API level 1
public boolean performClick ()

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

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

setAdapter

Added in API level 1
public void setAdapter (SpinnerAdapter adapter)

Sets the SpinnerAdapter used to provide the data which backs this Spinner.

If this Spinner has a popup theme set in XML via the popupTheme attribute, the adapter should inflate drop-down views using the same theme. The easiest way to achieve this is by using getPopupContext() to obtain a layout inflater for use in SpinnerAdapter.getDropDownView(int, View, ViewGroup).

Spinner overrides Adapter.getViewTypeCount() on the Adapter associated with this view. Calling getItemViewType(int) on the object returned from AbsSpinner.getAdapter() will always return 0. Calling getViewTypeCount() will always return 1. On API Build.VERSION_CODES.LOLLIPOP and above, attempting to set an adapter with more than one view type will throw an IllegalArgumentException.

Parameters
adapter SpinnerAdapter: the adapter to set

Throws
IllegalArgumentException if the adapter has more than one view type

setDropDownHorizontalOffset

Added in API level 16
public void setDropDownHorizontalOffset (int pixels)

Set a horizontal offset in pixels for the spinner's popup window of choices. Only valid in MODE_DROPDOWN; this method is a no-op in other modes.

Related XML Attributes:

Parameters
pixels int: Horizontal offset in pixels

setDropDownVerticalOffset

Added in API level 16
public void setDropDownVerticalOffset (int pixels)

Set a vertical offset in pixels for the spinner's popup window of choices. Only valid in MODE_DROPDOWN; this method is a no-op in other modes.

Related XML Attributes:

Parameters
pixels int: Vertical offset in pixels

setDropDownWidth

Added in API level 16
public void setDropDownWidth (int pixels)

Set the width of the spinner's popup window of choices in pixels. This value may also be set to ViewGroup.LayoutParams.MATCH_PARENT to match the width of the Spinner itself, or ViewGroup.LayoutParams.WRAP_CONTENT to wrap to the measured size of contained dropdown list items.

Only valid in MODE_DROPDOWN; this method is a no-op in other modes.

Related XML Attributes:

Parameters
pixels int: Width in pixels, WRAP_CONTENT, or MATCH_PARENT

setEnabled

Added in API level 1
public void setEnabled (boolean enabled)

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.

setGravity

Added in API level 11
public void setGravity (int gravity)

Describes how the selected item view is positioned. Currently only the horizontal component is used. The default is determined by the current theme.

Related XML Attributes:

Parameters
gravity int: See Gravity

setOnItemClickListener

Added in API level 1
public void setOnItemClickListener (AdapterView.OnItemClickListener l)

A spinner does not support item click events. Calling this method will raise an exception.

Instead use AdapterView.setOnItemSelectedListener.

Parameters
l AdapterView.OnItemClickListener: this listener will be ignored

setPopupBackgroundDrawable

Added in API level 16
public void setPopupBackgroundDrawable (Drawable background)

Set the background drawable for the spinner's popup window of choices. Only valid in MODE_DROPDOWN; this method is a no-op in other modes.

Related XML Attributes:

Parameters
background Drawable: Background drawable

setPopupBackgroundResource

Added in API level 16
public void setPopupBackgroundResource (int resId)

Set the background drawable for the spinner's popup window of choices. Only valid in MODE_DROPDOWN; this method is a no-op in other modes.

Related XML Attributes:

Parameters
resId int: Resource ID of a background drawable

setPrompt

Added in API level 1
public void setPrompt (CharSequence prompt)

Sets the prompt to display when the dialog is shown.

Parameters
prompt CharSequence: the prompt to set

setPromptId

Added in API level 1
public void setPromptId (int promptId)

Sets the prompt to display when the dialog is shown.

Parameters
promptId int: the resource ID of the prompt to display when the dialog is shown

Protected methods

onDetachedFromWindow

Added in API level 1
protected void onDetachedFromWindow ()

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.

onLayout

Added in API level 1
protected void onLayout (boolean changed, 
                int l, 
                int t, 
                int r, 
                int b)

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

l int: Left position, relative to parent

t int: Top position, relative to parent

r int: Right position, relative to parent

b int: Bottom position, relative to parent

onMeasure

Added in API level 1
protected void onMeasure (int widthMeasureSpec, 
                int heightMeasureSpec)

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 View.MeasureSpec.

heightMeasureSpec int: vertical space requirements as imposed by the parent. The requirements are encoded with View.MeasureSpec.