情境
在如何使用DatePickerDialog中,我們是犯了怎麼使用日期選擇器,那你會想問是否有時間選擇器,答案是有的,Android 提供了現成的元件讓使用者可以直接選取時間的工具,這樣使用者就可以正確的選取時間了。
完整程式碼
如果你想要完整程式碼,可以到 GitHub 上觀看或下載。
程式碼說明
首先你先建立好一個 Button 跟一個 TextView。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="16dp"
android:orientation="vertical"
tools:context=".MainActivity">
<Button android:id="@+id/date_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/date_select" />
<TextView android:id="@+id/date_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
可以看到結果如下圖。
以下這份程式碼是java部分的程式碼, 搭配上面的xml部分,
可以直接複製貼上, 就可以執行。
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
date_button.setOnClickListener {
val calendar = Calendar.getInstance()
val hour = calendar.get(Calendar.HOUR_OF_DAY)
val minute = calendar.get(Calendar.MINUTE)
TimePickerDialog(this, {
_, hour, minute-> date_text.text = "現在時間是 $hour:$minute"
}, hour, minute, true).show()
}
}
}
讓我們來看一下 TimePickerDialog 的接口。
class TimePickerDialog(Context context, OnTimeSetListener listener, int hourOfDay, int minute, boolean is24HourView)
TimePickerDialog 是一個 Android 寫好的類別,它可以提供使用者簡單操作的設定時間介面,
呼叫它的方式就是呼叫 TimePickerDialog 並且傳入對應的參數。
- 第一個參數是 Context , 也就是說必須把 MainActivity 本身或者 Context 物件傳入。
- 第二個參數是 OnTimeSetListener , 這邊是實作 OnTimeSetListener 這個介面的事件, 它提供使用者操控完時間介面後, 所傳回的時間。
- 第三個是現在是幾點, 我們可以透過 Canlendar 的幫忙得到這個資訊。
- 第四個是現在是幾分, 我們可以透過 Canlendar 的幫忙得到這個資訊。
- 最後一個參數是boolean, true代表呈現24小時, false代表只顯示12小時。
你會注意到時間旁邊有出現上午跟下午,這是因為最後一個參數你設定為 false。
如果你改成 true 就會看到以下畫面是 24 小時狀態的。
當你按下確定以後,就會把結果回傳至事件傳入值,再利用這些傳入字將其填入 Toast 訊息內,如下圖。
這樣就是一個簡單的 TimePickerDialog 的應用了。