Android Picker

劉強東發表於2017-07-04

介紹幾個Android自帶的選擇器.

對話方塊

以下類屬於Dialog的子類. 程式碼中建立對話方塊的形式

  • DatePickerDialog 日期選擇器
  • TimePickerDialog 時間選擇器
  • CharaterPickerDialog 字元選擇器(廢棄)

控制元件

在佈局中使用的控制元件

  • DatePicker 日期選擇器
  • TimePicker 時間選擇器
  • NumberPicker 數字選擇器

時間選擇器

關鍵類:TimePickerDialog

Android Picker

示例程式碼:

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

Android Picker

示例程式碼:

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

太醜, 沒啥意義. 隨便自定義個對話方塊都比他好看. 我就不講了

Android Picker

相關文章