Picker、 PinPicker、DatePicker、 TimePicker

Picker、 PinPicker、DatePicker、 TimePicker

关于选择器的一些知识,基本都是官方抄过来的

Picker子类

DatePicker

DatePicker is a directly subclass of Picker

PinPicker

Picker subclass for allowing the user to enter a numerical PIN. 

TimePicker

TimePicker is a direct subclass of Picker

Picker 是一个显示多个自定义PickerColumns的小部件。PickerColumns 在setColumns(List)setColumnAt(int, PickerColumn)如果列值范围或标签更改,则调用。调用setColumnValue(int, int, boolean)以更新 PickerColumn 的当前值。

Picker 有两种状态并且会改变高度:

  • View.isActivated()是真的:选择器通常垂直显示三个项目(请参阅 getActivatedVisibleItemCount()}。getSelectedColumn()如果选择器聚焦,则除列之外的列仍显示一个项目。在触摸屏设备上,选择器不会获得焦点,因此它始终在所有列上显示三个项目。在 a非触控设备(电视),选择器只会在当前激活的列上显示三个项目。如果选择器有焦点,它将拦截DPAD方向并选择激活的列。

  • View.isActivated()为 false:选择器getVisibleItemCount()在所有列上垂直显示一项(请参阅 )。Picker 的大小缩小。

公共构造函数,子类的构造基本一样

Picker(Context context, AttributeSet attributeSet)

创建一个选择器小部件。

Picker(Context context, AttributeSet attrs, int defStyleAttr)

创建一个选择器小部件。

需要留意的接口,基本都需要用到的

interface

Picker.PickerValueListener

Picker值变化的监听器。 

公共方法

公共方法

void

addOnValueChangedListener(Picker.PickerValueListener listener)

注册一个回调以在选择器的值改变时调用。

boolean

dispatchKeyEvent(KeyEvent event)

float

getActivatedVisibleItemCount()

返回激活时列中显示的可见项目数。

PickerColumn

getColumnAt(int colIndex)

获取第 n 个 PickerColumn。

int

getColumnsCount()

获取 PickerColumns 的数量。

final int

getPickerItemLayoutId()

扩展类Picker可以调用setPickerItemLayoutId(int)以提供Picker项目的布局 ID

final int

getPickerItemTextViewId()

如果提供的布局是 {link TextView},则从提供的布局中返回Picker's item'sTextView的 id 。 getPickerItemLayoutId()getPickerItemLayoutId()

int

getSelectedColumn()

获取当前激活的列索引。

final CharSequence

getSeparator()

此方法已弃用。采用getSeparators()

final List<CharSequence>

getSeparators()

返回将在选取器列字段之间填充的分隔符列表。

float

getVisibleItemCount()

返回未激活时列中显示的可见项目数。

void

onColumnValueChanged(int columnIndex, int newValue)

扩展类Picker可以覆盖此函数以在滚动列表时提供行为。

void

removeOnValueChangedListener(Picker.PickerValueListener listener)

删除以前安装的值更改回调

void

requestChildFocus(View child, View focused)

void

setActivated(boolean activated)

void

setActivatedVisibleItemCount(float visiblePickerItems)

更改激活时列中显示的可见项目数。

void

setColumnAt(int columnIndex, PickerColumn column)

当列标签更改或列范围更改时,调用此函数以重新填充选择列表。

void

setColumnValue(int columnIndex, int value, boolean runAnimation)

手动设置列的当前值。

void

setColumns(List<PickerColumn> columns)

设置列并创建视图。

final void

setPickerItemLayoutId(int pickerItemLayoutId)

设置用于选择器项目的布局。

final void

setPickerItemTextViewId(int textViewId)

Picker的项目的TextView人的身份,从所提供的布局中getPickerItemLayoutId()或0,如果所提供的布局getPickerItemLayoutId()是{TextView的链接}。

void

setSelectedColumn(int columnIndex)

更改当前选定的列。

final void

setSeparator(CharSequence separator)

设置选择器列之间的分隔符字符串。

final void

setSeparators(List<CharSequence> separators)

设置将在 Picker 列之间填充的分隔符列表。

void

setVisibleItemCount(float pickerItems)

更改未激活时列中显示的可见项目数。

受保护的方法

int

getPickerItemHeightPixels()

扩展类Picker可以选择覆盖此方法以提供Picker列的单个项目高度(以像素为单位)。

boolean

onRequestFocusInDescendants(int direction, Rect previouslyFocusedRect)

PinPicker

Picker允许用户输入数字 PIN 的子类。列数可以自定义,默认为4。

公共方法

boolean

dispatchKeyEvent(KeyEvent event)

String

getPin()

返回用户输入的 PIN。

boolean

performClick()

void

resetPin()

重置所有列并选择第一列。

void

setNumberOfColumns(int count)

设置用于输入 PIN 的列数。

日期选择器

DatePicker是 的直接子类Picker。这个类是一个用于选择日期的小部件。日期可以通过年、月、日 Columns 选择。可以自定义从中选择日期的“minDate”和“maxDate”。

公共方法

long

getDate()

获取TimeZone.getDefault()时区中自 1970 年 1 月 1 日 00:00:00 以来的当前日期值(以毫秒为单位) 。

String

getDatePickerFormat()

获取显示日期的格式。

long

getMaxDate()

获取DatePicker自 1970 年 1 月 1 日 00:00:00 以来TimeZone.getDefault()时区支持的最大日期(以毫秒为单位) 。

long

getMinDate()

获取DatePicker自 1970 年 1 月 1 日 00:00:00 以来TimeZone.getDefault()时区支持的最小日期(以毫秒为单位) 。

final void

onColumnValueChanged(int columnIndex, int newValue)

扩展类Picker可以覆盖此函数以在滚动列表时提供行为。

void

setDate(long timeInMilliseconds)

更新TimeZone.getDefault()时区中自 1970 年 1 月 1 日 00:00:00 以来的当前日期(以毫秒为单位) 。

void

setDate(int year, int month, int dayOfMonth, boolean animation)

更新当前日期。

void

setDatePickerFormat(String datePickerFormat)

更改显示日期的格式。

void

setMaxDate(long maxDate)

设置DatePicker自 1970 年 1 月 1 日 00:00:00 以来TimeZone.getDefault()时区支持的最大日期(以毫秒为单位) 。

void

setMinDate(long minDate)

设置DatePicker自 1970 年 1 月 1 日 00:00:00 以来TimeZone.getDefault()时区支持的最小日期(以毫秒为单位) 。

时间选择器

在 24 小时制或 AM/PM 模式下选择一天中的时间的小部件。

XML 属性

android:timePickerMode

定义小部件的外观。在 L 版本之前,唯一的选择是微调器。从 L 开始,在选择 Material 主题的情况下,默认布局是时钟,但可以使用此属性来强制使用微调器。必须是以下常量值之一。

2

带有钟面的时间选择器可以选择时间。

旋转器

1

带有微调控件的时间选择器可以选择时间。

公共方法

void

autofill(AutofillValue value)

自动填充此视图的内容value。

void

dispatchProvideAutofillStructure(ViewStructure structure, int flags)

ViewStructure当 Assist 结构作为自动填充请求的一部分被创建时,在层次结构中向下分配用于自动填充目的的s 的创建。

除了调用默认View实现之外,此实现还添加了视图组的所有子视图。

CharSequence

getAccessibilityClassName()

返回此对象的类名以用于可访问性目的。

int

getAutofillType()

描述此视图的自动填充类型,因此 AutofillService可以AutofillValue 在自动填充视图时创建正确的类型。

AutofillValue

getAutofillValue()

获取View的当前自动填充值。

int

getBaseline()

返回小部件文本基线与小部件顶部边界的偏移量。

Integer

getCurrentHour()

此方法在 API 级别 23 中已弃用。使用 getHour()

Integer

getCurrentMinute()

此方法在 API 级别 23 中已弃用。使用 getMinute()

int

getHour()

使用 24 小时制返回当前选定的小时。

int

getMinute()

返回当前选定的分钟。

boolean

is24HourView()

boolean

isEnabled()

返回此视图的启用状态。

void

setCurrentHour(Integer currentHour)

此方法在 API 级别 23 中已弃用。使用 setHour(int)

void

setCurrentMinute(Integer currentMinute)

此方法在 API 级别 23 中已弃用。使用 setMinute(int)

void

setEnabled(boolean enabled)

设置此视图的启用状态。

void

setHour(int hour)

使用 24 小时制设置当前选定的小时。

void

setIs24HourView(Boolean is24HourView)

使用 AM/PM 选择器设置此小部件是以 24 小时模式还是 12 小时模式显示时间。

void

setMinute(int minute)

设置当前选择的分钟。

void

setOnTimeChangedListener(TimePicker.OnTimeChangedListener onTimeChangedListener)

设置用户调整时间的回调。

boolean

validateInput()

根据区域设置验证用户当前输入是否为有效时间。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时代我西

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值