Android Datum Tijdkiezer wordt veel gebruikt in Android-apps. In deze tutorial zullen we het gebruik van een Datumkiezer en Tijdkiezer Dialoog in onze Android-toepassing demonstreren. Deze componenten worden gebruikt om datum en tijd te selecteren in een aangepaste gebruikersinterface. We zullen de klassen DatePickerDialog
en TimePickerDialog
gebruiken met de klasse Calendar
in de code van onze Android-toepassing om dit te bereiken.
Android DatePickerDialog en TimePickerDialog
Hoewel een Datumkiezer en Tijdkiezer als onafhankelijke widgets kunnen worden gebruikt, nemen ze meer ruimte in op het scherm. Daarom is het beter om ze in een dialoogvenster te gebruiken. Gelukkig biedt Android ons zijn eigen DatePickerDialog- en TimePickerDialog-klassen. De klassen DatePickerDialog en TimePickerDialog hebben respectievelijk de callback-methoden onDateSetListener()
en onTimeSetListener()
. Deze callback-methoden worden aangeroepen wanneer de gebruiker klaar is met het invullen van de datum en tijd. De klasse DatePickerDialog bestaat uit een constructeur met 5 argumenten met de onderstaande parameters.
- Context: Het vereist de toepassingscontext
- CallBack-functie:
onDateSet()
wordt aangeroepen wanneer de gebruiker de datum instelt met de volgende parameters:
- int jaar : Het zal het huidige geselecteerde jaar van het dialoogvenster opslaan
- int maandVanHetJaar : Het zal de momenteel geselecteerde maand opslaan uit het dialoogvenster
- int dagVanDeMaand : Het zal de momenteel geselecteerde dag opslaan uit het dialoogvenster
- int jaar : Het toont het huidige jaar dat zichtbaar is wanneer het dialoogvenster verschijnt
- int maand : Het toont de huidige maand die zichtbaar is wanneer het dialoogvenster verschijnt
- int dag : Het toont de huidige dag die zichtbaar is wanneer het dialoogvenster verschijnt
De TimePickerDialog-klasse bestaat uit een constructor met 5 argumenten met de onderstaande parameters.
- Context: Het vereist de toepassingscontext
- CallBack Functie:
onTimeSet()
wordt aangeroepen wanneer de gebruiker de tijd instelt met de volgende parameters:
- int uurVanDeDag : Het zal het momenteel geselecteerde uur van de dag opslaan uit het dialoogvenster
- int minuut : Het zal de momenteel geselecteerde minuut opslaan uit het dialoogvenster
- int uren : Het toont het huidige uur dat zichtbaar is wanneer het dialoogvenster verschijnt
- int minuten : Het toont de huidige minuut die zichtbaar is wanneer het dialoogvenster verschijnt
- boolean false : Als dit op false is ingesteld, wordt de tijd weergegeven in 24-uurs formaat, anders niet
Voorbeeldprojectstructuur van Android DateTime Picker
Projectcode voor Android DateTime Picker-dialoog
Het bestand activity_main.xml
bestaat uit twee knoppen om de Datum- en Tijdkiezer-dialoogvensters op te roepen en de door de gebruiker geselecteerde tijd in de twee EditText-weergaven in te stellen. De XML-code wordt hieronder gegeven. activity_main.xml
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<EditText
android:layout_width="200dp"
android:layout_height="wrap_content"
android:id="@+id/in_date"
android:layout_marginTop="82dp"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="SELECT DATE"
android:id="@+id/btn_date"
android:layout_alignBottom="@+id/in_date"
android:layout_toRightOf="@+id/in_date"
android:layout_toEndOf="@+id/in_date" />
<EditText
android:layout_width="200dp"
android:layout_height="wrap_content"
android:id="@+id/in_time"
android:layout_below="@+id/in_date"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="SELECT TIME"
android:id="@+id/btn_time"
android:layout_below="@+id/btn_date"
android:layout_alignLeft="@+id/btn_date"
android:layout_alignStart="@+id/btn_date" />
</RelativeLayout>
De klasse MainActivity.java
wordt hieronder gegeven:
package com.journaldev.datetimepickerdialog;
import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TimePicker;
import java.util.Calendar;
public class MainActivity extends AppCompatActivity implements
View.OnClickListener {
Button btnDatePicker, btnTimePicker;
EditText txtDate, txtTime;
private int mYear, mMonth, mDay, mHour, mMinute;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnDatePicker=(Button)findViewById(R.id.btn_date);
btnTimePicker=(Button)findViewById(R.id.btn_time);
txtDate=(EditText)findViewById(R.id.in_date);
txtTime=(EditText)findViewById(R.id.in_time);
btnDatePicker.setOnClickListener(this);
btnTimePicker.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (v == btnDatePicker) {
// Huidige datum ophalen
final Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = new DatePickerDialog(this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
txtDate.setText(dayOfMonth + "-" + (monthOfYear + 1) + "-" + year);
}
}, mYear, mMonth, mDay);
datePickerDialog.show();
}
if (v == btnTimePicker) {
// Huidige tijd ophalen
final Calendar c = Calendar.getInstance();
mHour = c.get(Calendar.HOUR_OF_DAY);
mMinute = c.get(Calendar.MINUTE);
// Tijdkiezer-dialoog starten
TimePickerDialog timePickerDialog = new TimePickerDialog(this,
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay,
int minute) {
txtTime.setText(hourOfDay + ":" + minute);
}
}, mHour, mMinute, false);
timePickerDialog.show();
}
}
}
In de bovenstaande code hebben we een Calendar-object gemaakt met behulp van Calendar.getInstance()
om de huidige datum en tijd weer te geven met de respectievelijke statische velden. Let op: De weergave van de kalender en klok zijn de standaard UI-thema’s zoals verstrekt in het AppCompat-thema. Hieronder is de output geproduceerd door ons voorbeeld van een Android-datumtijdkiezer. Hiermee komt een einde aan de zelfstudie voor het voorbeeld van het Android datumtijdkiezerdialoogvenster. Je kunt het definitieve Android DateTimePickerDialog Project downloaden via de onderstaande link.
Source:
https://www.digitalocean.com/community/tutorials/android-date-time-picker-dialog