一個活動日期確認的應用。
- 提供日期、時間的選擇
- 提供一個按鈕,點下後顯示確認日期提示
涉及到的元素
- Calendar
- DatePickerDialog / TimePickerDialog
- SimpleDateFormat
- AlertDialog
TimePickerDialog
我們通過一個 cal 變量來記錄使用者設定的時間,一開始會先取得當前時間。
1 |
var cal = Calendar.getInstance() |
當使用者點下輸入框的時候就跳出 TimePickerDialog,其中的時間取自我們的 cal 。
1 2 3 4 5 6 7 8 |
private var timeTextEditHandler = View.OnClickListener { view -> TimePickerDialog(this, timeSetListener, cal.get(Calendar.HOUR), cal.get(Calendar.MINUTE), true ).show() } |
當使用者選好時間以後,會執行我們提供的 timeSetListener:
先改變我們的 cal 的時間(其中 .HOUR_OF_DAY 是 24小時制,而 .HOUR 是 12小時制度)。
然後改變 timeEditText 顯示的時間。
1 2 3 4 5 6 7 8 |
val timeSetListener = TimePickerDialog.OnTimeSetListener{ view, hour, minute -> cal.set(Calendar.HOUR, hour) cal.set(Calendar.MINUTE, minute) val time = SimpleDateFormat("HH:mm", Locale.TAIWAN) timeEditText.text = time.format(cal.time) } |
SimpleDateFormat
可以通過類似 iOS 的 DateFormatter 的 SimpleDateFormat 來指定時間格式。
1 2 |
val time = SimpleDateFormat("HH:mm", Locale.TAIWAN) timeEditText.text = time.format(cal.time) |
AlertDialog
通過 AlertDialog.Builder() 來建立 Dialog 的畫面。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
val time = SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.TAIWAN).format(cal.time) // setup dialog builder val builder = AlertDialog.Builder(this) builder.setTitle("Party time confirm") builder.setMessage("$time") builder.setPositiveButton("Confirm",{ dialog, whichButton -> println("confirm") }) builder.setNegativeButton("Cancel", { dialog, whichButton -> println("cancel") }) // create dialog and show it val dialog = builder.create() dialog.show() |
參考
- 官方文件 – DatePickerDialog
- 官方文件 – TimePickerDialog
- 可以到 Github 上看對應的 Source Code