Android – Ocultar el campo de fecha en datepickerdialog
Cómo ocultar / eliminar el campo de fecha en datepickerdialog. En realidad, mi requisito es utilizar el diálogo de selección de fecha nativo, pero se muestra con día, mes y año. Pero según mi requisito necesito solamente mes y año. Así que quiero ocultar o eliminar el campo de día de la vista.
Cualquier ayuda será muy útil.
- Inicialice la fecha en android datepicker a una fecha específica, que no es la fecha actual.
- Validar "desde fecha" y "hasta la fecha" en android
- Vista del Calendario de Android para el selector de fechas
- Selector de fecha y hora en una vista
- Android DatePickerDialog: Establecer fecha mínima y máxima para la selección
- ¿Cómo conservar el estado del diálogo de fecha y hora en el cambio de orientación?
- Cómo transferir la cadena de fecha con formato de mi DatePickerFragment?
- Datepicker para Android min max date before api level 11
- Hacer que un botón Datepicker tenga un aspecto similar al de la aplicación de calendario de Google
- Fecha máxima en un DatePickerDialog de Android
- Cómo cambiar el color de texto del centro de selección de números en Android
- Fecha y hora Validación en android usando edittext oyente
- Cómo mostrar DatePickerDialog en el botón de clic?
Private DatePickerDialog createDialogWithoutDateField(){ DatePickerDialog dpd = new DatePickerDialog(_activity, ExpiryDateSetListener,cyear,cmonth, cday); try{ Field[] datePickerDialogFields = dpd.getClass().getDeclaredFields(); for (Field datePickerDialogField : datePickerDialogFields) { if (datePickerDialogField.getName().equals("mDatePicker")) { datePickerDialogField.setAccessible(true); DatePicker datePicker = (DatePicker) datePickerDialogField.get(dpd); Field datePickerFields[] = datePickerDialogField.getType().getDeclaredFields(); for (Field datePickerField : datePickerFields) { if ("mDayPicker".equals(datePickerField.getName())) { datePickerField.setAccessible(true); Object dayPicker = new Object(); dayPicker = datePickerField.get(datePicker); ((View) dayPicker).setVisibility(View.GONE); } } } } }catch(Exception ex){ } return dpd; }
Utilice el código anterior para ocultar el campo del día en DatePickerDialog.
Refiérase a este LINK
No recomiendo usar Reflection para hacer este tipo de cosas.
Hay una manera más simple y más bonita de hacerlo:
((ViewGroup) datePickerDialog.getDatePicker()).findViewById(Resources.getSystem().getIdentifier("day", "id", "android")).setVisibility(View.GONE);
Tenga en cuenta que el método .getDatePicker()
de DatePickerDialog
funciona en API LEVEL >= 11
.
El código fuente de DatePicker
y DatePickerDialog
están disponibles para que usted pueda clonar, refactorizar en su propio paquete y modificarlo para adaptarlo.
((ViewGroup) datePickerDialog.getDatePicker()).findViewById(Resources.getSystem().getIdentifier("day", "id", "android")).setVisibility(View.GONE);
Esto funciona correctamente
Lo siento, estoy tarde, pero he encontrado la respuesta perfecta de esa pregunta, se necesita todo un día para mí para encontrarlo, Así que estoy publicando mi mejor respuesta:
private Calendar mCalendar; mCalendar = Calendar.getInstance();// Initialize Calendar
Dialog_date_picker.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/rounded_corners" android:orientation="vertical" android:padding="8dp"> <DatePicker android:id="@+id/date_picker" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="4" android:calendarViewShown="false" android:datePickerMode="spinner" /> <Button android:id="@+id/date_time_set" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:background="@color/colorPrimary" android:text="Set" android:textColor="@color/colorWhite" /></LinearLayout>
DialogMethod llamado Click:
private void ExpiryDialog() { System.out.println("Inside Dialog Box"); final Dialog dialog = new Dialog(context); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(R.layout.dialog_date_picker); dialog.show(); final DatePicker datePicker = (DatePicker) dialog.findViewById(R.id.date_picker); date_time_set = (Button) dialog.findViewById(R.id.date_time_set); datePicker.init(mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH), null); LinearLayout ll = (LinearLayout) datePicker.getChildAt(0); LinearLayout ll2 = (LinearLayout) ll.getChildAt(0); ll2.getChildAt(1).setVisibility(View.INVISIBLE); date_time_set.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view){ dialog.dismiss(); Integer month = datePicker.getMonth()+1; Integer year = datePicker.getYear(); expMonth = (month.toString().length() == 1 ? "0"+month.toString():month.toString()); expYear = year.toString(); etExpiryDate.setText(expMonth + "/" + expYear); } }); }
Estos trabajos del código y ocultar día en DatePicker, así que puedo mostrar la fecha de caducidad para las tarjetas. ¡¡Disfrutar!!
Calendar c = Calendar.getInstance(); int mYear = c.get(Calendar.YEAR); int mMonth = c.get(Calendar.MONTH); int mDay = c.get(Calendar.DAY_OF_MONTH); DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(), AlertDialog.THEME_HOLO_DARK, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { txtMonth.setText(dayOfMonth + "-" + (monthOfYear + 1) + "-" + year); } }, mYear, mMonth, mDay); ((ViewGroup) datePickerDialog.getDatePicker()).findViewById(Resources.getSystem().getIdentifier("day", "id", "android")).setVisibility(View.GONE); datePickerDialog.show();
Refiera este acoplamiento Deshabilite la selección del día en el ejemplo del datepicker
No creo que necesites ir tan profundo a menos que quieras personalizarlo .. hay el:
mDatePicker.getDatePicker().setCalendarViewShown(false);
Que es una llamada muy legítima para eliminar el segmento de calendario.
- Android: Colocar ImageView en la superposición entre diseños
- ANDROID / WEBVIEW- Uncaught TypeError: Object no tiene ningún método 'changeActivity' en el archivo: