widgets tipos studio mejores gratis best android android-widget

tipos - DateTime selector en la aplicación de Android



tipos de widgets android studio (15)

Aquí hay una versión más compacta de la idea de Jaydeep de mostrar un diálogo después del otro. Me gusta esta solución porque no tiene dependencias.

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();

¿Hay algún widget de Android que permita elegir la fecha y la hora al mismo tiempo? Ya uso el selector de tiempo básico y el selector de fecha .

Pero no son tan sexy y fácil de usar (encontré). ¿Sabes si existe un widget que incluya fecha y hora? Muchas gracias, Luc



Coloque tanto DatePicker como TimePicker en un diseño 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>

El código:

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();


Escribí un pequeño widget que te permite elegir la fecha y la hora.

DateTimeWidget


Estaba enfrentando el mismo problema en uno de mis proyectos y decidí crear un widget personalizado que tenga tanto la fecha como el selector de tiempo en un solo diálogo fácil de usar. Puede obtener el código fuente junto con un ejemplo en http://code.google.com/p/datetimepicker/ . El código tiene licencia bajo Apache 2.0.



Las URL que vinculan muestran cómo mostrar un diálogo con un selector de tiempo y otro diálogo con un selector de fecha. Sin embargo, debe tener en cuenta que puede usar esos widgets UI directamente en su propio diseño. Puede crear su propio cuadro de diálogo que incluya tanto un TimePicker como un DatePicker en la misma vista, logrando así lo que creo que está buscando.

En otras palabras, en lugar de usar TimePickerDialog y DatePickerDialog, simplemente use los widgets UI TimePicker y DatePicker directamente en su propio diálogo o actividad.


Llame al cuadro de diálogo del selector de tiempo en el método de tiempo de actualización DatePicker . No se llamará al mismo tiempo, pero cuando presione el botón Establecer DatePicker . Se abrirá el cuadro de diálogo del selector de tiempo. El método se da a continuación.

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; } }

el archivo main.xml se da a continuación

<?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>


No hay nada integrado en Android que ofrezca esto.


Otra opción es el proyecto android-wheel que se acerca bastante al diálogo UIDatePicker de iOS.

Proporciona un control deslizante vertical para elegir cualquier cosa (incluida la fecha y la hora). Si prefiere el control deslizante horizontal, el DateSlider referenciado por Rabi es mejor.


Puede usar una de las DatePicker library wdullaer/MaterialDateTimePicker

  • Primero muestra 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:"); }

  • Luego, 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); }

  • El tiempo de la tienda de onTimeSet callback

    @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); }



Utilice esta función que le permitirá seleccionar la fecha y el tiempo de una en una, luego establecerlo en la fecha de la variable global. Sin biblioteca sin 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(); }


Creé una library para hacer esto. ¡También tiene colores personalizables!

Es muy simple de usar.

Primero creas un oyente:

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. } };

Luego usted crea y muestra el diálogo:

new SlideDateTimePicker.Builder(getSupportFragmentManager()) .setListener(listener) .setInitialDate(new Date()) .build() .show();

Espero que le sea útil.