CalendarViewShown no está siendo reconocido en Android 5.0 Lollipop
Estoy trabajando en la guía para Android de The Big Nerd Ranch. En la asignación Intención criminal estoy usando DatePicker con el siguiente diseño.
En dispositivos anteriores a 5.0, el calendario no se muestra en DatePicker como se define en el diseño, pero Android 5.0 lo ignora y muestra un calendario. ¿Alguna idea de lo que podría estar pasando aquí?
- DatePicker.OnDateChangedListener llamado dos veces
- Diseño de material Android Inline Datepicker issue
- DatePicker.setMinDate (long minDate) lanza IllegalArgumentException: Tiempo no entre
- ¿Establecer límite en DatePickerDialog en Android?
- Capaz de elegir la fecha futura al establecer la fecha máxima en datepicker
El código completo está disponible en Github .
Dialog_date.xml
<?xml version="1.0" encoding="utf-8"?> <DatePicker xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/dialog_date_datePicker" android:layout_width="match_parent" android:layout_height="match_parent" android:calendarViewShown="false" > </DatePicker>
DatePickerFragment.java
package com.sudhirkhanger.android.criminalintent; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.DialogFragment; import android.view.View; import android.widget.DatePicker; import android.widget.DatePicker.OnDateChangedListener; public class DatePickerFragment extends DialogFragment { public static final String EXTRA_DATE = "com.sudhirkhanger.android.criminalintent.date"; private Date mDate; public static DatePickerFragment newInstance(Date date) { Bundle args = new Bundle(); args.putSerializable(EXTRA_DATE, date); DatePickerFragment fragment = new DatePickerFragment(); fragment.setArguments(args); return fragment; } private void sendResult(int resultCode) { if (getTargetFragment() == null) return; Intent i = new Intent(); i.putExtra(EXTRA_DATE, mDate); getTargetFragment().onActivityResult(getTargetRequestCode(), resultCode, i); } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { mDate = (Date) getArguments().getSerializable(EXTRA_DATE); // Create a Calendar to get the year, month, and day final Calendar calendar = Calendar.getInstance(); // calendar.setTime(mDate); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH); int day = calendar.get(Calendar.DAY_OF_MONTH); View v = getActivity().getLayoutInflater().inflate( R.layout.dialog_date, null); DatePicker datePicker = (DatePicker) v .findViewById(R.id.dialog_date_datePicker); datePicker.init(year, month, day, new OnDateChangedListener() { public void onDateChanged(DatePicker view, int year, int month, int day) { // Translate year, month, day into a Date object using a // calendar int hour = calendar.get(Calendar.HOUR_OF_DAY); int minute = calendar.get(Calendar.MINUTE); mDate = new GregorianCalendar(year, month, day, hour, minute) .getTime(); // Update argument to preserve selected value on rotation getArguments().putSerializable(EXTRA_DATE, mDate); } }); return new AlertDialog.Builder(getActivity()) .setView(v) .setTitle(R.string.date_picker_title) .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { sendResult(Activity.RESULT_OK); } }).create(); } }
- Cómo deshabilitar fechas futuras en el selector de fechas de Android
- Cómo cambiar los colores "Dividers" de Dialog de DatePicker de Android
- Obtener el valor del selector de fecha y hora a partir de un solo fragmento de diálogo y establecerlo en EditText
- Buscando un buen calendario datepicker para android
- Datepicker y timepicker - establece valores máximos y mínimos en android
- El nombre del mes aparece con el número M + en el cuadro de diálogo datePicker en android
- DatePicker no funciona al intentar utilizarlo
- Visualización de un DatePicker con o sin el campo del año
La solución ha sido publicada aquí
Tienes que usar ambos android:calendarViewShown="false"
y android:datePickerMode="spinner"
.
Esto lo resuelve.
<DatePicker xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/dialog_date_datePicker" android:layout_width="match_parent" android:layout_height="match_parent" android:calendarViewShown="false" android:datePickerMode="spinner" > </DatePicker>
Abajo código trabajado para mí
new DatePickerDialog(getActivity(),android.R.style.Theme_Holo_Dialog, this, year,month, day);
- No se puede determinar si Google Play Store está instalado o no en el dispositivo Android
- Android XML: android: elevación vs. aplicación: elevación