Android Picker

3,152 阅读2分钟

我平时项目开发必备框架

  1. Android上最强网络请求 Net
  2. Android上最强列表(包含StateLayout) BRV
  3. Android最强缺省页 StateLayout
  4. JSON和长文本日志打印工具 LogCat
  5. 支持异步和全局自定义的吐司工具 Tooltip
  6. 开发调试窗口工具 DebugKit
  7. 一行代码创建透明状态栏 StatusBar

介绍几个Android自带的选择器.

对话框

以下类属于Dialog的子类. 代码中创建对话框的形式

  • DatePickerDialog 日期选择器
  • TimePickerDialog 时间选择器
  • CharaterPickerDialog 字符选择器(废弃)

控件

在布局中使用的控件

  • DatePicker 日期选择器
  • TimePicker 时间选择器
  • NumberPicker 数字选择器

时间选择器

关键类:TimePickerDialog

示例代码:

new TimePickerDialog(mContext, new TimePickerDialog.OnTimeSetListener() {
                 @Override
                 public void onTimeSet(TimePicker view, int hourOfDay, int minute) {

                 }
             }, 5,6,true).show();

唯一需要关心的方法

void onClick (DialogInterface dialog, 
                int which)


日期选择器

关键类: DatePickerDialog

示例代码:

new DatePickerDialog(mContext, new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {

                    }
                },2017, 4, 10).show();

数字选择器

关键类:NumberPicker

虽然名字叫做数字选择器, 但实际上字符串都可以. 提供键盘输入(要求输入的内容在范围内)和滑动选择两种输入方式.

    <NumberPicker
        android:id="@+id/picker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />

除了布局创建要想正常工作还需要代码指定参数

  1. 范围
  2. 最大值和最小值
        mPicker.setDisplayedValues(new String[] { "我", "是", "肥宅" }); // 范围
        mPicker.setMinValue(0); // 可滑动最大值
        mPicker.setMaxValue(2); // 可滑动最小值
		mPicker.setValue(2); // 设置当前选中

值变化监听器

        mPicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
            @Override public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
                
            }
        });

当前状态监听器

mPicker.setOnScrollListener(new NumberPicker.OnScrollListener() {
            @Override public void onScrollStateChange(NumberPicker view, int scrollState) {
                
            }
        });

scrollState有三种状态:

  1. SCROLL_STATE_FLING
  2. SCROLL_STATE_IDLE
  3. SCROLL_STATE_TOUCH_SCROLL

长按更新数据

// 长按响应时间, 默认300ms
void setOnLongPressUpdateInterval (long intervalMillis)

通过实现接口NumberPicker.Formatter可以自定义格式

void setFormatter (NumberPicker.Formatter formatter)

字符选择器

关键类:CharaterPickerDialog

太丑, 没啥意义. 随便自定义个对话框都比他好看. 我就不讲了