DatePicker

Последнее обновление: 15.10.2021

DatePicker представляет элемент для выбора даты. Среди его атрибутов можно отметить следующие:

  • android:calendarTextColor: цвет текста календаря

  • android:calendarViewShown: указывает, будет ли отображаться вид календаря

  • android:datePickerMode: устанавливает режим выбора даты

  • android:dayOfWeekBackground: устанавливает фоновый цвет панели выбора дня недели

  • android:endYear: устанавливает последний отображаемый год

  • android:firstDayOfWeek: устанавливает первый день недели

  • android:headerBackground: устанавливает фоновый цвет для панели выбранной даты

  • android:maxDate: устанавливает максимальную отображаемую дату в формате mm/dd/yyyy

  • android:minDate: устанавливает минимальную отображаемую дату в формате mm/dd/yyyy

  • android:spinnersShown: указывает, будет ли отображаться спиннер в виджете

  • android:startYear: устанавливает начальный отображаемый год

  • android:yearListSelectorColor: устанавливает цвет для поля выбора года

Среди методов DatePicker можно отметить следующие:

  • int getDayOfMonth(): возвращает номер выбранного дня

  • int getMonth(): возвращает номер выбранного месяца (от 0 до 11)

  • int getYear()(): возвращает номер выбранного года

  • void init(int year, int monthOfYear, int dayOfMonth, DatePicker.OnDateChangedListener onDateChangedListener): устанавливает начальную дату. Последний параметр устанавливает слушатель изменения выбранной даты

  • void setOnDateChangedListener(DatePicker.OnDateChangedListener onDateChangedListener): устанавливает слушатель изменения выбранной даты

  • void setFirstDayOfWeek(int firstDayOfWeek): устанавливает первый день недели

  • void updateDate(int year, int month, int dayOfMonth): программно обновляет выбранную дату

Пусть в activity_main.xml определен элемент DatePicker:

<?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/dateTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="26sp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <DatePicker android:id="@+id/datePicker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/dateTextView" />

</androidx.constraintlayout.widget.ConstraintLayout>

Применим некоторые методы DatePicker для управления его поведением:

package com.example.viewapp;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.DatePicker;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView dateTextView = findViewById(R.id.dateTextView);
        DatePicker datePicker = this.findViewById(R.id.datePicker);

        // Месяц начиная с нуля. Для отображения добавляем 1.
        datePicker.init(2020, 02, 01, new DatePicker.OnDateChangedListener() {
            @Override
            public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {

                // Отсчет месяцев начинается с нуля. Для отображения добавляем 1.
                dateTextView.setText("Дата: " + view.getDayOfMonth() + "/" +
                        (view.getMonth() + 1) + "/" + view.getYear());
						
				// альтернативная запись
                // dateTextView.setText("Дата: " + dayOfMonth + "/" + (monthOfYear + 1) + "/" + year);
            }
        });
    }
}

Используя метод datePicker.init(); устанавливаем дату по умолчанию - 1 марта 2020 года, так как отсчет месяцев идет с нуля. Кроме того, с помощью последнего параметра - объекта DatePicker.OnDateChangedListener устанавливается обработка выбора даты. Каждый раз, когда пользователь будет выбирать дату, будет срабатывать метод onDateChanged() объекта DatePicker.OnDateChangedListener. Этот метод принимает четыре параметра - view (элемент DatePicker), year (выбранный год), monthOfYear (выбранный месяц), dayOfMonth (выбранный день).

Далее мы можем получить выбранные день, месяц и год. Причем для можно использовать как параметры метода onDateChanged, так и методы самого DatePicker

Начальное состояние перед выбором - установлена дата 1 марта 2020 года.

Отображение даты и DatePicker в Android и Java

Выбор произвольной даты (20 мая 2020 года):

OnDateChangedListener и DatePicker в Android и Java

DatePicker по умолчанию отображается в режиме календаря, но мы можем использовать добавить другой режим - спиннер с помощью атрибута android:datePickerMode:

<DatePicker android:id="@+id/datePicker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:datePickerMode="spinner"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/dateTextView" />
Spinner в DatePicker в Android и Java

В данном случае спиннер отображается слева от календаря. Если мы вовсе не хотим отображать календаря, то можно установить атрибут android:calendarViewShown="false"

<DatePicker android:id="@+id/datePicker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:datePickerMode="spinner"
		android:calendarViewShown="false"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/dateTextView" />
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850