Android 12 Developer Preview is here! Try it out, and give us your feedback!


open class Picker : FrameLayout
   ↳ android.view.View
   ↳ android.view.ViewGroup
   ↳ android.widget.FrameLayout
   ↳ androidx.leanback.widget.picker.Picker

Picker is a widget showing multiple customized PickerColumns. The PickerColumns are initialized in setColumns(List). Call setColumnAt(int, PickerColumn) if the column value range or labels change. Call setColumnValue(int, int, boolean) to update the current value of PickerColumn.

Picker has two states and will change height:

  • isActivated() is true: Picker shows typically three items vertically (see getActivatedVisibleItemCount()}. Columns other than getSelectedColumn() still shows one item if the Picker is focused. On a touch screen device, the Picker will not get focus so it always show three items on all columns. On a non-touch device (a TV), the Picker will show three items only on currently activated column. If the Picker has focus, it will intercept DPAD directions and select activated column.
  • isActivated() is false: Picker shows one item vertically (see getVisibleItemCount()) on all columns. The size of Picker shrinks.
  • Summary

    Nested classes

    Listener for Picker value changes.

    Public constructors
    <init>(context: Context!, attributeSet: AttributeSet!)

    Creates a Picker widget.

    <init>(context: Context!, attrs: AttributeSet!, defStyleAttr: Int)

    Creates a Picker widget.

    Public methods
    open Unit

    Register a callback to be invoked when the picker's value has changed.

    open Boolean

    open Float

    Returns number of visible items showing in a column when it's activated.

    open PickerColumn!
    getColumnAt(colIndex: Int)

    Get nth PickerColumn.

    open Int

    Get number of PickerColumns.


    Classes extending Picker can call setPickerItemLayoutId(int) to supply the Picker's item's layout id


    Returns the Picker's item's TextView's id from within the layout provided by Picker#getPickerItemLayoutId() or 0 if the layout provided by Picker#getPickerItemLayoutId() is a {link TextView}.

    open Int

    Get current activated column index.


    Gets separator string between columns.


    Returns the list of separators that will be populated between the picker column fields.

    open Float

    Returns number of visible items showing in a column when it's not activated.

    open Unit
    onColumnValueChanged(columnIndex: Int, newValue: Int)

    Classes extending Picker can override this function to supply the behavior when a list has been scrolled.

    open Unit

    Remove a previously installed value changed callback

    open Unit
    requestChildFocus(child: View!, focused: View!)

    open Unit
    setActivated(activated: Boolean)

    open Unit
    setActivatedVisibleItemCount(visiblePickerItems: Float)

    Changes number of visible items showing in a column when it's activated.

    open Unit
    setColumnAt(columnIndex: Int, column: PickerColumn!)

    When column labels change or column range changes, call this function to re-populate the selection list.

    open Unit
    setColumnValue(columnIndex: Int, value: Int, runAnimation: Boolean)

    Manually set current value of a column.