AndroidStudio:MaterialTimePicker を使う

めちゃくちゃ参考にさせていただいたサイト

https://developer.android.com/reference/com/google/android/material/timepicker/MaterialTimePicker
https://material.io/components/time-pickers/android#using-time-pickers

 

MaterialDatePicker とほぼ一緒
https://prgrm.work/archives/1124
setInputMode はテキスト入力と時計で入力できるモードがある。setMinute,setHour はデフォルトの時間。

中身

import android.app.Activity
import android.widget.EditText
import androidx.fragment.app.FragmentActivity
import com.google.android.material.timepicker.MaterialTimePicker
import com.google.android.material.timepicker.MaterialTimePicker.INPUT_MODE_CLOCK
import java.util.*

class MTimePicker {
    fun showTimePickerDialog(item: EditText,calendar:Calendar,activity:Activity){
        val timePicker =
            MaterialTimePicker.Builder().setHour(12).setInputMode(INPUT_MODE_CLOCK).setMinute(10).build().apply {
                addOnPositiveButtonClickListener(){
                    val timeText = hour.toString() + ":" + minute.toString()
                    item.setText(timeText)
                }
            }
        timePicker.show((activity as FragmentActivity).supportFragmentManager,"TAG")
    }
}

呼び方

val mTimePicker = MTimePicker()
mTimePicker.showTimePickerDialog(editText,calendar,activity)

引数は適当に設定。
activity を引数にとるから activity内で button 押したときとかにいれるのがいいと思う。もとの関数は editText を押したときようだけど item を Button とかにもできる。

MaterialDatePicker を入力した後 MaterialTimePicker を表示したい場合

import android.app.Activity
import android.widget.EditText
import androidx.fragment.app.FragmentActivity
import com.google.android.material.timepicker.MaterialTimePicker
import com.google.android.material.timepicker.MaterialTimePicker.INPUT_MODE_CLOCK
import java.util.*

class MTimePicker {
    val datePicker = MDatePicker()
    fun showTimePickerDialog(item: EditText,calendar:Calendar,activity:Activity){
        val timePicker =
            MaterialTimePicker.Builder().setHour(12).setInputMode(INPUT_MODE_CLOCK).setMinute(10).build().apply {
                addOnPositiveButtonClickListener(){
                    val timeText = hour.toString() + ":" + minute.toString()
                    item.setText(timeText)
                }
            }
        timePicker.show((activity as FragmentActivity).supportFragmentManager,"TAG")
        datePicker.show(item,calendar,activity)
    }
}

後に書いたやつが先にでてくるらしい。show はそういう感じなのかな?

datepicker,timepicker はWebで無料で使えないらしい。いずれ android もそうなるのかな?

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA