Picker、 PinPicker、DatePicker、 TimePicker
关于选择器的一些知识,基本都是官方抄过来的
Picker子类
DatePicker is a directly subclass of Picker. | |
Picker subclass for allowing the user to enter a numerical PIN. | |
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值变化的监听器。 |
公共方法
公共方法 | |
void | addOnValueChangedListener(Picker.PickerValueListener listener) 注册一个回调以在选择器的值改变时调用。 |
boolean | dispatchKeyEvent(KeyEvent event) |
float | getActivatedVisibleItemCount() 返回激活时列中显示的可见项目数。 |
getColumnAt(int colIndex) 获取第 n 个 PickerColumn。 | |
int | 获取 PickerColumns 的数量。 |
final int | 扩展类Picker可以调用setPickerItemLayoutId(int)以提供Picker项目的布局 ID |
final int | 如果提供的布局是 {link TextView},则从提供的布局中返回Picker's item'sTextView的 id 。 getPickerItemLayoutId()getPickerItemLayoutId() |
int | 获取当前激活的列索引。 |
final CharSequence | 此方法已弃用。采用getSeparators() |
final List<CharSequence> | 返回将在选取器列字段之间填充的分隔符列表。 |
float | 返回未激活时列中显示的可见项目数。 |
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 | |
boolean | onRequestFocusInDescendants(int direction, Rect previouslyFocusedRect) |
PinPicker
Picker允许用户输入数字 PIN 的子类。列数可以自定义,默认为4。
公共方法
boolean | dispatchKeyEvent(KeyEvent event) |
String | getPin() 返回用户输入的 PIN。 |
boolean | |
void | resetPin() 重置所有列并选择第一列。 |
void | setNumberOfColumns(int count) 设置用于输入 PIN 的列数。 |
日期选择器
DatePicker是 的直接子类Picker。这个类是一个用于选择日期的小部件。日期可以通过年、月、日 Columns 选择。可以自定义从中选择日期的“minDate”和“maxDate”。
公共方法
long | getDate() 获取TimeZone.getDefault()时区中自 1970 年 1 月 1 日 00:00:00 以来的当前日期值(以毫秒为单位) 。 |
String | 获取显示日期的格式。 |
long | 获取DatePicker自 1970 年 1 月 1 日 00:00:00 以来TimeZone.getDefault()时区支持的最大日期(以毫秒为单位) 。 |
long | 获取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实现之外,此实现还添加了视图组的所有子视图。 |
返回此对象的类名以用于可访问性目的。 | |
int | 描述此视图的自动填充类型,因此 AutofillService可以AutofillValue 在自动填充视图时创建正确的类型。 |
获取View的当前自动填充值。 | |
int | 返回小部件文本基线与小部件顶部边界的偏移量。 |
此方法在 API 级别 23 中已弃用。使用 getHour() | |
此方法在 API 级别 23 中已弃用。使用 getMinute() | |
int | getHour() 使用 24 小时制返回当前选定的小时。 |
int | 返回当前选定的分钟。 |
boolean | |
boolean | 返回此视图的启用状态。 |
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 | 根据区域设置验证用户当前输入是否为有效时间。 |