Diálogo de selección de fecha y hora
Quiero crear un diálogo que puede seleccionar la hora y la fecha al mismo tiempo .
Sé que no hay un widget predeterminado que pueda hacer eso en Android . También sé que hay proyectos de código abierto sobre cómo hacer el personal similar. El problema en este proyecto es que en el diálogo tenemos dos botones: datePicker y timePicker .
- Android: Establecer el tiempo en el selector de tiempo con el tiempo mostrado en la vista de texto
- Cómo mostrar dos números en minuto en android
- Usar TimePicker o DatePicker en la pantalla Preferencias en Android
- Android: ¿Cambia el separador de tiempo en TimePicker estándar?
- ¿Hay alguna forma de usar cancel en Android JellyBean TimePickerDialog?
Y eso no es lo que quiero hacer – Quiero que el selector de fecha y hora aparezca al mismo tiempo.
Así que creo que los dos principales problemas serán:
- En primer lugar, haga que el selector de hora y fecha aparezca en el mismo diálogo.
- Y el segundo problema será cambiar la apariencia del selector de hora y fecha (el color naranja).
El primer problema fue resuelto por Bhavesh. Esto es lo que obtengo:
El problema ahora es que quiero cambiar todo el color de barra azul a color naranja .
He añadido android:calendarViewShown="false"
para eliminar el calendario a la derecha 🙂 Gracias Bhavesh y yo cambió el tema a HOLO
Esto es lo que obtengo:
Usted puede descargar el código (que es lo mejor que puedo hacer). Puede descargarlo desde aquí .
- Selector de tiempo que muestra el tiempo como 4: 7 en lugar de 04:07
- TimePicker NullPointerException en ICS
- ¿Cómo puedo agregar un nuevo botón en el widget del selector de fechas en android?
- Android: enfoque en elementos TimePicker
- Obtener el total de horas de dos timepicker
- Android: TimePicker setIs24HourView no funciona
- OnTimeSet también se llama al descartar TimePickerDialog
- Android TimePicker (Estilo de rueda) no responde correctamente a los gestos de desplazamiento dentro de ScrollView
En primer lugar, haga que el selector de hora y fecha aparezca en el mismo diálogo
Aquí puedo ayudarle a algunos lo que: puede crear un diseño consistente en un DatePicker
y un TimePicker
en un LinearLayout
con la orientación a la vertical.
Custom_dialog.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <DatePicker android:id="@+id/datePicker1" android:layout_width="wrap_content" android:layout_height="wrap_content" > </DatePicker> <TimePicker android:id="@+id/timePicker1" android:layout_width="wrap_content" android:layout_height="wrap_content" > </TimePicker> </LinearLayout>
A continuación, utilice este diseño para crear su diálogo.
Dialog dialog = new Dialog(mContext); dialog.setContentView(R.layout.custom_dialog); dialog.setTitle("Custom Dialog");
Para reaccionar al usuario que interactúa con su TimePicker
, haga algo como esto:
TimePicker tp = (TimePicker)dialog.findViewById(R.id.timepicker1); tp.setOnTimeChangedListener(myOnTimechangedListener);
Para obtener los valores de Date- y TimePicker cuando el usuario haya terminado de configurarlos, agregue un botón Aceptar en su diálogo y luego lea los valores de fecha y hora de la Fecha y TimePicker cuando el usuario presiona Aceptar.
Para hacer algo que se ve exactamente como en sus capturas de pantalla le recomiendo que haga todas las cosas personalizadas con su propia lógica.
Para cambiar los colores de la barra azul, pruebe lo siguiente.
Defina su propio tema de la siguiente manera, que se extiende THEME_HOLO_DARK
Intente lo siguiente: –
<style name="testo" parent="@android:style/Widget.DeviceDefault.DatePicker"> <item name="android:divider">@drawable/MyDivider</item> </style>
Compruebe el siguiente cambio-base-tema-color-de-android-aplicación
Hay muchas soluciones disponibles hay una de ellas, me gusta este método simple:
String mDateTime; void getDateTime(){ final Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH); int day = c.get(Calendar.DAY_OF_MONTH); final int hour = c.get(Calendar.HOUR_OF_DAY); final int minute = c.get(Calendar.MINUTE); mDateTime = ""; new DatePickerDialog( mContext, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { mDateTime = year +"-"+ month +"-"+ dayOfMonth; new Handler().postDelayed(new Runnable() { @Override public void run() { new TimePickerDialog(mContext, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { mDateTime+=" "+hourOfDay+":"+minute; } }, hour, minute, false).show(); } },500); } }, year, day, month).show(); }
- Kotlin-android: enlace de datos de referencia no resuelto
- Ventajas de utilizar Bundle en lugar de Direct Intent putExtra () en Android