【AndroidのViewを制する】 TimePickerを使いこなして時間選択を行う

このエントリーを Google ブックマーク に追加
Pocket
[`yahoo` not found]

Androidで時間を選択するためにTimePickerがあります。

TimePickerの選択モードを切り替える

TimePickerには2つの選択モードがあります。
スピナーモードとクロックモードです。
スピナーモードでは時間をスピナーで表示し、時間を選択することができます。
クロックモードではマテリアルスタイルの時計から時間を選択することができます。
API Level 21以前は、スピナーモードしか使用できませんでした。
API Level 21以降で、マテリアルテーマが選択されている場合デフォルトのレイアウトはクロックモードです。
このモードはTimePickerのXML属性の一つであるtimePickerModeで変更することができます。
<!-- スピナーモード-->
<TimePicker
    android:id="@+id/time_picker"
    android:timePickerMode="spinner"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

<!-- クロックモード-->
<TimePicker
    android:id="@+id/time_picker"
    android:timePickerMode="clock"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

TimePicker#setHourとTimePicker#getHour

TimePicker#setHourは選択中の時を変更することができます。
TimePicker#getHourは選択中の時を取得することができます。
TimePicker timePicker = new TimePicker(this);
// 0時に設定
timePicker#setHour(0);

TimePicker#setMinuteとTimePicker#getMinute

TimePicker#setHourは選択中の分を変更することができます。
TimePicker#getHourは選択中の分を取得することができます。
TimePicker timePicker = new TimePicker(this);
// 0分に設定
timePicker#setMinute(0);

TimePicker#setCurrentHourとTimePicker#getCurrentHour

TimePicker#setCurrentHourは選択中の時を変更することができます。
TimePicker#getCurrentHourは選択中の時を取得することができます。
API Level 23で非推奨になっています。
TimePicker timePicker = new TimePicker(this);
// 0時に設定
timePicker#setCurrentHour(0);

TimePicker#setCurrentMinuteとTimePicker#getCurrentMinute

TimePicker#setCurrentHourは選択中の分を変更することができます。
TimePicker#getCurrentHourは選択中の分を取得することができます。
API Level 23で非推奨になっています。
TimePicker timePicker = new TimePicker(this);
// 0分に設定
timePicker#setCurrentMinute(0);

TimePicker#setEnabledとTimePicker#isEnabled

TimePicker#setEnabledは時間選択機能の有効無効を設定するメソッドです。
引数にtrueを渡すと時間を選択することができますが、falseを渡すと時間を選択することができません。
また、TimePicker#isEnabledは、時間選択機能の有効無効を取得するメソッドです。
TimePicker timePicker = new TimePicker(this);
// スピナーの選択を無効にする
TimePicker.setEnabled(true);

TimePicker#setIs24HourViewとTimePicker#is24HourView

TimePicker#setIs24HourViewは時間表示を24時間表記に設定するメソッドです。
trueを渡すと24時間表記になります、falseを渡すと12時間表記になり、 午前/午後を選択するためのボタンまたはスピナーが表示されます。
また、TimePicker#is24HourViewは、時間表示が24時間表記かどうかを取得するメソッドです。
TimePicker timePicker = new TimePicker(this);
// 12時間表記に変更する
TimePicker.setIs24HourView(true);

TimePicker#setOnTimeChangedListener

TimePicker#setOnTimeChangedListenerは選択された時間が変更された時に呼ばれるコールバックインターフェースを設定するメソッドです。
TimePicker TimePicker = new TimePicker(this);
timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
    @Override
    public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
        Log.d("you", hourOfDay + "時 " + minute +"分");
    }
});

まとめ

グラフィカルではない簡易な時間選択が必要な場合は、TimePickerをスピナーモードで使用するといいでしょう。