Datetime-Picker in Android-Anwendung [geschlossen]
-
20-09-2019 - |
Frage
Gibt es eine Android-Widget, das das Datum und die Zeit, in der gleichen Zeit ermöglichen, wählen? Ich verwende bereits den Grund Zeitauswahl und Datumsauswahl .
Aber sie sind nicht so sexy und benutzerfreundlich (ich finde). Wissen Sie, ob ein Widget sowohl Datum und Uhrzeit einschließlich existiert? Danke vielmals, Luc
Lösung
Es gibt nichts in Android gebaut, dass Angebote in diesem.
EDIT: Andriod jetzt bietet integrierte in Pflücker. Überprüfen Sie @Oded Antwort
Andere Tipps
Setzen Sie sowohl DatePicker
und TimePicker
in einem Layout XML.
date_time_picker.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:padding="8dp"
android:layout_height="match_parent">
<DatePicker
android:id="@+id/date_picker"
android:layout_width="match_parent"
android:calendarViewShown="true"
android:spinnersShown="false"
android:layout_weight="4"
android:layout_height="0dp" />
<TimePicker
android:id="@+id/time_picker"
android:layout_weight="4"
android:layout_width="match_parent"
android:layout_height="0dp" />
<Button
android:id="@+id/date_time_set"
android:layout_weight="1"
android:layout_width="match_parent"
android:text="Set"
android:layout_height="0dp" />
</LinearLayout>
Der Code:
final View dialogView = View.inflate(activity, R.layout.date_time_picker, null);
final AlertDialog alertDialog = new AlertDialog.Builder(activity).create();
dialogView.findViewById(R.id.date_time_set).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DatePicker datePicker = (DatePicker) dialogView.findViewById(R.id.date_picker);
TimePicker timePicker = (TimePicker) dialogView.findViewById(R.id.time_picker);
Calendar calendar = new GregorianCalendar(datePicker.getYear(),
datePicker.getMonth(),
datePicker.getDayOfMonth(),
timePicker.getCurrentHour(),
timePicker.getCurrentMinute());
time = calendar.getTimeInMillis();
alertDialog.dismiss();
}});
alertDialog.setView(dialogView);
alertDialog.show();
Mit dieser Funktion wird es Sie pic Datum und die Uhrzeit einer aktivieren, indem man dann setzen Sie sich auf globales Variable Datum. Keine Bibliothek keine XML.
Calendar date;
public void showDateTimePicker() {
final Calendar currentDate = Calendar.getInstance();
date = Calendar.getInstance();
new DatePickerDialog(context, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
date.set(year, monthOfYear, dayOfMonth);
new TimePickerDialog(context, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
date.set(Calendar.HOUR_OF_DAY, hourOfDay);
date.set(Calendar.MINUTE, minute);
Log.v(TAG, "The choosen one " + date.getTime());
}
}, currentDate.get(Calendar.HOUR_OF_DAY), currentDate.get(Calendar.MINUTE), false).show();
}
}, currentDate.get(Calendar.YEAR), currentDate.get(Calendar.MONTH), currentDate.get(Calendar.DATE)).show();
}
Ich habe eine Bibliothek dies zu tun. Es hat auch kundengerechte Farben!
Es ist sehr einfach zu bedienen.
Zuerst wird ein Listener erstellen:
private SlideDateTimeListener listener = new SlideDateTimeListener() {
@Override
public void onDateTimeSet(Date date)
{
// Do something with the date. This Date object contains
// the date and time that the user has selected.
}
@Override
public void onDateTimeCancel()
{
// Overriding onDateTimeCancel() is optional.
}
};
Dann erstellen und zeigen Sie den Dialog:
new SlideDateTimePicker.Builder(getSupportFragmentManager())
.setListener(listener)
.setInitialDate(new Date())
.build()
.show();
Ich hoffe, Sie finden es nützlich.
Rufen Sie den Zeitauswahl-Dialog in der DatePicker
Aktualisierungszeit-Methode. Es wird nicht zur gleichen Zeit aufgerufen werden, aber wenn man DatePicker
Set-Taste drücken. Der Zeitauswahl-Dialog wird geöffnet.
Das Verfahren ist unten angegeben.
package com.android.date;
import java.util.Calendar;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.TimePicker;
public class datepicker extends Activity {
private TextView mDateDisplay;
private Button mPickDate;
private int mYear;
private int mMonth;
private int mDay;
private TextView mTimeDisplay;
private Button mPickTime;
private int mhour;
private int mminute;
static final int TIME_DIALOG_ID = 1;
static final int DATE_DIALOG_ID = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mDateDisplay =(TextView)findViewById(R.id.date);
mPickDate =(Button)findViewById(R.id.datepicker);
mTimeDisplay = (TextView) findViewById(R.id.time);
mPickTime = (Button) findViewById(R.id.timepicker);
//Pick time's click event listener
mPickTime.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
showDialog(TIME_DIALOG_ID);
}
});
//PickDate's click event listener
mPickDate.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
showDialog(DATE_DIALOG_ID);
}
});
final Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
mhour = c.get(Calendar.HOUR_OF_DAY);
mminute = c.get(Calendar.MINUTE);
}
//-------------------------------------------update date---//
private void updateDate() {
mDateDisplay.setText(
new StringBuilder()
// Month is 0 based so add 1
.append(mDay).append("/")
.append(mMonth + 1).append("/")
.append(mYear).append(" "));
showDialog(TIME_DIALOG_ID);
}
//-------------------------------------------update time---//
public void updatetime() {
mTimeDisplay.setText(
new StringBuilder()
.append(pad(mhour)).append(":")
.append(pad(mminute)));
}
private static String pad(int c) {
if (c >= 10)
return String.valueOf(c);
else
return "0" + String.valueOf(c);
//Datepicker dialog generation
private DatePickerDialog.OnDateSetListener mDateSetListener =
new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
mYear = year;
mMonth = monthOfYear;
mDay = dayOfMonth;
updateDate();
}
};
// Timepicker dialog generation
private TimePickerDialog.OnTimeSetListener mTimeSetListener =
new TimePickerDialog.OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
mhour = hourOfDay;
mminute = minute;
updatetime();
}
};
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DATE_DIALOG_ID:
return new DatePickerDialog(this,
mDateSetListener,
mYear, mMonth, mDay);
case TIME_DIALOG_ID:
return new TimePickerDialog(this,
mTimeSetListener, mhour, mminute, false);
}
return null;
}
}
die main.xml ist unten angegeben
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"/>
<TextView android:id="@+id/time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""/>
<Button
android:id="@+id/timepicker"
android:text="Change Time"
android:layout_height="wrap_content"
android:layout_width="wrap_content"/>
<TextView
android:id="@+id/date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""/>
<Button android:id="@+id/datepicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="200dp"
android:text="Change the date"/>
</LinearLayout>
Die URLs, die Sie verknüpfen zu zeigen, wie ein Dialog mit einer Zeitauswahl Pop-up und einen weiteren Dialog mit einem Datumsauswahl. Allerdings müssen Sie sich bewusst sein, dass Sie die UI-Widgets direkt in Ihrem eigenen Layout verwenden können. Sie könnten Ihren eigenen Dialog aufzubauen, die sowohl eine Timepicker und Datepicker in der gleichen Ansicht enthält, so vollbringen, was ich denke, Sie suchen.
Mit anderen Worten, anstatt mit TimePickerDialog und DatePickerDialog, verwenden Sie nur die UI-Widgets Timepicker und Datepicker direkt in Ihrem eigenen Dialog oder Aktivität.
Ich wollte auch einen Datepicker und einen Timepicker kombinieren. So erstelle ich eine API sowohl in einer Schnittstelle zu handhaben! :)
https://github.com/Kunzisoft/Android-SwitchDateTimePicker
eingebenSie können auch verwenden SublimePicker
Ich war mit Blick auf das gleiche Problem in einem meiner Projekte und haben beschlossen, ein eigenes Widget zu machen, die in einem benutzerfreundlichen Dialog sowohl das Datum und die Uhrzeit Picker hat. Sie können zusammen mit einem Beispiel den Quellcode erhalten Sie unter http://code.google.com/p/datetimepicker / . Der Code ist unter der Apache Lizenz 2.0.
I gegabelt, aktualisiert, überarbeitet und das Android-dateslider Projekt mavenized. Es ist auf Github jetzt:
Auch dieses Tutorial Link wird helfen http: // custom-android-dn.blogspot.com/2013/03/how-to-create-custom-date-time-picker.html
Sie können mit einer von DatePicker library
wdullaer / MaterialDateTimePicker
-
Zuerst zeigen Datepicker.
private void showDatePicker() { Calendar now = Calendar.getInstance(); DatePickerDialog dpd = DatePickerDialog.newInstance( HomeActivity.this, now.get(Calendar.YEAR), now.get(Calendar.MONTH), now.get(Calendar.DAY_OF_MONTH) ); dpd.show(getFragmentManager(), "Choose Date:"); }
-
Dann
onDateSet callback store date & show TimePicker
@Override public void onDateSet(DatePickerDialog view, int year, int monthOfYear, int dayOfMonth) { Calendar cal = Calendar.getInstance(); cal.set(year, monthOfYear, dayOfMonth); filter.setDate(cal.getTime()); new Handler().postDelayed(new Runnable() { @Override public void run() { showTimePicker(); } },500); }
-
Auf
onTimeSet callback
Speicherzeit@Override public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute) { Calendar cal = Calendar.getInstance(); if(filter.getDate()!=null) cal.setTime(filter.getDate()); cal.set(Calendar.HOUR_OF_DAY,hourOfDay); cal.set(Calendar.MINUTE,minute); }
Eine weitere Option ist das android-Rad Projekt, das die die UIDatePicker ziemlich nahe kommt Dialog von iOS.
Es bietet einen vertikalen Schieberegler etwas (inklusive Datum und Zeit) zu wählen. Wenn Sie horizontale Schieberegler bevorzugen, die DateSlider von Rabi verwiesen wird, ist besser.
Ich habe einen Alarm-Dialog wird die Datumsauswahl und Zeitauswahl kombinieren. Sie können Code unter https://github.com/nguyentoantuit/android erhalten Hinweis: Datetimepicker ist eine Bibliothek
Hier ist eine kompaktere Version von Jaydeep Idee von einem Dialog nach der anderen. Ich mag diese Lösung, weil es keine Abhängigkeiten hat.
Date value = new Date();
final Calendar cal = Calendar.getInstance();
cal.setTime(value);
new DatePickerDialog(this,
new DatePickerDialog.OnDateSetListener() {
@Override public void onDateSet(DatePicker view,
int y, int m, int d) {
cal.set(Calendar.YEAR, y);
cal.set(Calendar.MONTH, m);
cal.set(Calendar.DAY_OF_MONTH, d);
// now show the time picker
new TimePickerDialog(NoteEditor.this,
new TimePickerDialog.OnTimeSetListener() {
@Override public void onTimeSet(TimePicker view,
int h, int min) {
cal.set(Calendar.HOUR_OF_DAY, h);
cal.set(Calendar.MINUTE, min);
value = cal.getTime();
}
}, cal.get(Calendar.HOUR_OF_DAY),
cal.get(Calendar.MINUTE), true).show();
}
}, cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),
cal.get(Calendar.DAY_OF_MONTH)).show();