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 применяется метод 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" />