Cómo desactivar CalendarView en un DatePicker?

En mi pantalla de configuración tengo un widget selector de fechas. En el diseñador de Eclipse, muestra como quiero (3 hilanderos para DMY), pero cuando pruebo en mi dispositivo, tengo una visión bastante extraña con un girador lateral a la izquierda y un calendario a la derecha. Nunca he visto esto antes (!) Pero haciendo algunas investigaciones creo que estoy viendo el "CalendarView".

Encontré que debería ser capaz de establecer una propiedad "calendarViewShown" a false, pero mi XML arroja un error con esto. Encontré otra pregunta aquí que sugirió que el nivel del API era culpable (mi minSDKLevel es 7, pero estoy dirigiendo 11 así que puedo conseguir el botón de la barra de la acción algo que el menú de oldskool). Así que pensé en intentar establecerlo en código:

int currentapiVersion = android.os.Build.VERSION.SDK_INT; if (currentapiVersion >= 11) minDateSelector.setCalendarViewShown = false; 

Pero nuevamente, este fall – setCalendarViewShown no se encuentra. Pero los docs dicen que debería existir. ¡¿Algunas ideas?!

Si está orientado a una versión posterior de la API, puede utilizar el siguiente código XML (no necesita escribir código Java) en su <DatePicker> :

  android:calendarViewShown="false" 

El método en DatePicker

  public void setCalendarViewShown (boolean shown) 

Existe a partir de la API 11. Si minSdkLevel = 7 el compilador no reconoce esto como un método válido – el método no existe en android 2.3 o 2.2. La mejor manera es resolver esto es usando la reflexión. Algo como esto debería funcionar correctamente:

 int currentapiVersion = android.os.Build.VERSION.SDK_INT; if (currentapiVersion >= 11) { try { Method m = minDateSelector.getClass().getMethod("setCalendarViewShown", boolean.class); m.invoke(minDateSelector, false); } catch (Exception e) {} // eat exception in our case } 

En esos casos utilizo

 import android.os.Build; @TargetApi(Build.VERSION_CODES.HONEYCOMB) public void someThing() { [...] if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { minDateSelector.setCalendarViewShown(false); } } 

Creo que la legibilidad es mejor que usar la reflexión y el estilo es mejor que capturar e ignorar las excepciones. Por supuesto, la reflexión también está funcionando.

Lo hice funcionar con la siguiente configuración XML:

 android:datePickerMode="spinner" android:calendarViewShown="false" 

Sólo la siguiente configuración no funcionó para mí:

 android:calendarViewShown="false" 

Tuve el mismo problema que usted, no pude hacer que el cambio aparezca a través de XML.

Usted está en el camino correcto, trate de cambiar su última línea a:

 minDateSelector.setCalendarViewShown(false); 
  • ¿Existe un equivalente a un inspector DOM para Android Native Layouts?
  • ScrollView en ambas direcciones android
  • Lamentablemente la aplicación se ha detenido
  • Eliminación del acolchado izquierdo en un Android EditText
  • Creación de controles compuestos con atributos XML personalizados
  • Android UnsupportedOperationException: No se puede convertir a color: type = 0x2
  • ¿Cómo obtenerContentHeight cuando se utiliza loadData?
  • Tamaño de imagen de Android (sólo en retrato) para mdpi, hdpi, xhdpi, xxhdpi
  • Error al cargar la actividad con HierarchyViewer
  • Cómo configurar los parámetros de un botón mediante programación
  • Layout_gravity no funciona dentro de LinearLayout
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.