Android:Picker(DatePicker、TimerPicker、NumberPicker)

jopen 9年前發布 | 143K 次閱讀 Android Android開發 移動開發

原文 http://www.dengzhr.com/others/mobile/716

一. DatePicker

DatePicker常用的XML屬性

</tr> </tbody>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr> </tbody> </table>

具體API可參考官方網站: http://developer.android.com/reference/android/widget/DatePicker.html

當用戶更改了DatePicker里的年、月、日時,將觸發OnDateChangedListener監聽器的onDateChange()事件。

示例:

activity_main.xml中:

<DatePicker
    android:id="@+id/myDatePicker"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:startYear="2015"
    android:endYear="2020"
    android:calendarViewShown="true"
    android:spinnersShown="true" />

MainActivity.java中:

private DatePicker datePicker;
private Calendar calendar;

private int year;
private int month;
private int day;

// 獲取日歷對象
calendar = Calendar.getInstance();
// 獲取當前對應的年、月、日的信息
year = calendar.get(Calendar.YEAR);
month = calendar.get(Calendar.MONTH) + 1;
day = calendar.get(Calendar.DAY_OF_MONTH);

datePicker = (DatePicker) findViewById(R.id.myDatePicker);

// dataPicker初始化
datePicker.init(year, month, day, new DatePicker.OnDateChangedListener() {
    @Override
    public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
        setTitle(year + "-" + (monthOfYear + 1) + "-" + dayOfMonth);
    }
});

效果圖如下:

Android:Picker(DatePicker、TimerPicker、NumberPicker)

二. TimerPicker

當用戶更改了TimePicker里的時、分時,將觸發OnTimeChangedListener監聽器的onTimeChanged事件。

示例:

activity_main.xml中:

<TimePicker
    android:id="@+id/myTimePicker"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal" />

MainActivity.java中:

private TimePicker timePicker;
private Calendar calendar;

private int hour;
private int minute;

// 獲取日歷對象
calendar = Calendar.getInstance();
// 獲取對應的時、分的信息
hour = calendar.get(Calendar.HOUR_OF_DAY);
minute = calendar.get(Calendar.MINUTE);

timePicker = (TimePicker) findViewById(R.id.myTimePicker);

// 為TimePicker指定監聽器
timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
    @Override
    public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
        setTitle(hourOfDay + "-" + minute);
    }
});

效果圖如下:

Android:Picker(DatePicker、TimerPicker、NumberPicker)

三. DatePickerDialog

DatePickerDialog和TimePickerDialog,與DatePicker和TimePicker,最大的區別是DatePicker和TimePicker是直接顯示在屏幕畫面上的,而DatePickerDialog和TimePickerDialog對象則是以彈出Dialog的方式來顯示。

創建DatePickerDialog的語法如下:

DatePickerDialog(Context context, DatePickerDialog.OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth)

參數說明:

  • context:當前上下文;
  • callback:OnDateSetListener日期改變監聽器;
  • year:初始化的年;
  • monthOfYear:初始化的月(從0開始計數,所以實際應用時需要加1);
  • dayOfMonth:初始化的日;

當用戶更改了DatePickerDialog里的年、月、日時,將觸發OnDateSetListener監聽器的onDateSet()事件。

示例:

private Calendar calendar;

private int year;
private int month;
private int day;

// 獲取日歷對象
calendar = Calendar.getInstance();
// 獲取當前對應的年、月、日的信息
year = calendar.get(Calendar.YEAR);
month = calendar.get(Calendar.MONTH) + 1;
day = calendar.get(Calendar.DAY_OF_MONTH);

datePicker = (DatePicker) findViewById(R.id.myDatePicker);

// 初始化DatePickerDialog
new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
        setTitle(year + "-" + (monthOfYear + 1) + "-" + dayOfMonth);
    }
}, year, month, day).show();

效果圖:

Android:Picker(DatePicker、TimerPicker、NumberPicker)

四. TimePickerDialog

創建TimePickerDialog的語法如下:

TimePickerDialog(Context context, TimePickerDialog.OnTimeSetListener listener, int hourOfDay, int minute, boolean is24HourView)

參數說明:

  • context:當前上下文;
  • listener:時間改變監聽器;
  • hourOfDay:初始化的小時;
  • minute:初始化的分鐘;
  • is24HourView:是否以24小時顯示時間;

當用戶更改了TimePickerDialog里的時、分時,將觸發OnTimeSetListener監聽器的onTimeSet()事件。

示例:

private Calendar calendar;

private int year;
private int month;
private int day;

// 獲取日歷對象
calendar = Calendar.getInstance();
// 獲取當前對應的年、月、日的信息
year = calendar.get(Calendar.YEAR);
month = calendar.get(Calendar.MONTH) + 1;
day = calendar.get(Calendar.DAY_OF_MONTH);

datePicker = (DatePicker) findViewById(R.id.myDatePicker);

// 初始化TimerPickerDialog
new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
    @Override
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        setTitle(hourOfDay + ":" + minute);
    }
}, hour, minute, true).show();

效果圖:

Android:Picker(DatePicker、TimerPicker、NumberPicker)

五. NumberPicker

NumberPicker是數值選擇器,用于讓用戶輸入數值,用戶既可以通過鍵盤輸入數值,也可以通過拖動來選擇數值。

NumberPicker的常用方法如下:

XML屬性 描述
android:calendarViewShown 設置該日期選擇是否顯示CalendarView組件。
android:endYear 設置日期選擇器允許選擇的最后一年。
android:maxDate 設置該日期選擇器的最大日期。以mm/dd/yyyy格式指定最大日期。
android:minDate 設置該日期選擇器的最小日期。以mm/dd/yyyy格式指定最小日期。
android:spinnersShown 設置該日期選擇器是否顯示Spinner日期選擇組件。
android:startYear 設置日期選擇器允許選擇的第一年。
方法 描述
setMinValue(int minVal) 設置該組件支持的最小值。
setMaxValue(int maxVal) 設置該組件支持的最大值。
setValue(int value) 設置該組件的當前值。
getMaxValue() 獲得該組件設置的最大值。
getMinValue() 獲得該組件設置的最小值。
getValue() 獲得當前組件顯示的值。
setValue(int value) 設置當前組件顯示的值。

示例:

activity_main.xml中:

<NumberPicker
    android:id="@+id/numberPicker"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"/>
<TextView
    android:id="@+id/currentNumShow"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_marginTop="20dp"
    android:textSize="30dp" />

MainActivity.java中:

private NumberPicker numberPicker;
private TextView currentNumShow;
private int minNum = 1, maxNum = 20, currentNum = 10;
// 更新顯示當前值的TextView
private void showCurrentNum() {
    currentNumShow.setText("Current Number is " + currentNum + ".");
}
numberPicker = (NumberPicker) findViewById(R.id.numberPicker);
currentNumShow = (TextView) findViewById(R.id.currentNumShow);
// 設置NumberPicker屬性
numberPicker.setMinValue(minNum);
numberPicker.setMaxValue(maxNum);
numberPicker.setValue(currentNum);
// 監聽數值改變事件
numberPicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
    @Override
    public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
        currentNum = newVal;
        // 在TextView中更新數據
        showCurrentNum();
    }
});

效果圖如下:

Android:Picker(DatePicker、TimerPicker、NumberPicker)

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!