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:
- ¿Cuál es la forma correcta de implementar un GridViewPager en Android Wear?
- ¿Por qué utilizar un CardView en lugar de un RelativeLayout o LinearLayout?
- Libros sobre Android Diseño de interfaces de usuario
- El mismo diseño para dispositivos grandes y grandes
- Botón estándar de Android con un color diferente
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?!
- DialogFragment es en pantalla completa. Cómo hacerlo pequeño
- Cómo manejar el evento de clic en cada celda de un diseño de tabla
- Google Maps Android API V2 ennegrece parte del diseño
- ViewGroup más ligero para contenedores
- Cómo encontrar el área de texto (altura / ancho) de TextView de forma programática en android
- Cómo establecer mediante programación el ancho de LinearLayout?
- Reemplazar (o "Anular") cadena en el proyecto de la biblioteca de Android
- Android: - Cómo agregar guión "-" en la palabra romper Android TextView debajo 6.0 OS
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);
- Android java lang runtimeexception no se puede conectar al servicio de cámara
- Cómo descartar el teclado en Android SearchView?