TimePicker

TimePicker представляє віджет для вибору часу, який може відображати час або в 24-годинному, або в 12-годинному форматі.

Атрибути TimePicker:

  • timePickerMode: дозволяє встановити режим відображення і може приймати значення:
    • clock — відображення у вигляді годинника;
    • spinner — відображення у вигляді спіннера.

Основні методи TimePicker:

  • int getHour(): повертає годину (в 24-годинному форматі).
  • int getMinute(): повертає хвилини.
  • boolean is24HourView(): повертає true, якщо використовується 24-годинний формат.
  • void setHour(int hour): встановлює годину для TimePicker.
  • void setIs24HourView(Boolean is24HourView): встановлює 24-годинний формат.
  • void setMinute(int minute): встановлює хвилини.
  • void setOnTimeChangedListener(TimePicker.OnTimeChangedListener onTimeChangedListener): встановлює слухач зміни часу у TimePicker у вигляді об'єкта TimePicker.OnTimeChangedListener.

Визначення TimePicker у activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="16dp">
 
    <TextView android:id="@+id/timeTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="26sp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
 
    <TimePicker android:id="@+id/timePicker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
 
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/timeTextView" />
 
</androidx.constraintlayout.widget.ConstraintLayout>

Застосуємо деякі методи TimePicker для управління його поведінкою:

package com.example.viewapp;
 
import androidx.appcompat.app.AppCompatActivity;
 
import android.os.Bundle;
import android.widget.TextView;
import android.widget.TimePicker;
 
public class MainActivity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        TextView timeTextView = findViewById(R.id.timeTextView);
        TimePicker timePicker = findViewById(R.id.timePicker);
 
        timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
            @Override
            public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
 
                timeTextView.setText("Время: " + hourOfDay + ":" + minute);
                // або так
                // timeTextView.setText("Время: " + view.getHour() + ":" + view.getMinute());
            }
         });
    }
}

Додавання слухача змін у TimePicker

Для додавання слухача змін у TimePicker використовується метод setOnTimeChangedListener(), до якого передається об'єкт TimePicker.OnTimeChangedListener. Він має єдиний метод — onTimeChanged(), який викликається щоразу при зміні часу в TimePicker.

Цей метод приймає три параметри:

  • TimePicker — сам елемент часу,
  • hourOfDay — вибрані години,
  • minute — вибрані хвилини.

У цьому випадку обране значення часу передається в TextView. За замовчуванням TimePicker відображається в режимі "clock" або годинник. Застосуємо режим "spinner":

<TimePicker android:id="@+id/timePicker"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:timePickerMode="spinner"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/timeTextView" />