2010-05-10 17 views
5

Me gustaría mostrar un DatePicker donde el campo del año sería visible o no, de acuerdo con una casilla de verificación.Mostrar un DatePicker con o sin el campo del año

Pero no encontré nada que me diera una forma de implementarlo.

¿Alguna idea por favor?

Gracias de antemano.

+0

por lo que sé que no es posible, al menos, en Android sdk 1.5 – Jorgesys

+0

Creo que perderás les es hora de codificar un DatePicker que se ajuste a todas sus necesidades. – Cristian

+0

Es un requisito un poco complicado dado que las fechas que estarían disponibles varían según el año ... El consejo de considerar escribir su propia versión (al menos para la versión de año no visible) probablemente sea bueno. – Adrian

Respuesta

1

Como no es posible eliminar el campo del año de DatePicker, finalmente decido agregar un CheckBox "ignorar el campo del año" para implementar una solución.

-1

Creo que el Any+Time™ DatePicker/TimePicker AJAX Calendar Widget podría funcionar para usted. Tiene la capacidad de elegir qué campos usar y un amigo me dijo que funciona bien en su teléfono Android. Simplemente compruebe si la casilla de verificación está marcada y luego cree el selector con una cadena de formato que contenga, o no contenga, un especificador de año, según corresponda.

+0

Gracias pero no quiero mezclar mi código con javascript, creo que complicaría demasiado mi aplicación. – tbruyelle

2

Eche un vistazo a DateSlider, una gran alternativa personalizable a DatePicker.

+0

Solucionado .......... –

+0

Solucionado ......... +1 – JoxTraex

2

establezca la casilla de verificación oyente como su necesidad de ver de casilla

if(id == R.id.event_checkBox_year) 
    { 
     if(ch.isChecked()) 
     { 
      visiblity = View.GONE; 
     } 
     else 
     { 
      visiblity = View.VISIBLE; 
     } 
     showHideYear(visiblity); 
    } 

private void showHideYear(int visiblity) 
{ 
    try { 
      Field f[] = date.getClass().getDeclaredFields(); 
      for (Field field : f) { 
       if (field.getName().equals("mYearSpinner") ||field.getName().equals("mYearPicker")) 
       { 
        field.setAccessible(true); 
        Object yearPicker = new Object(); 
        yearPicker = field.get(date); 
        ((View) yearPicker).setVisibility(visiblity); 
       } 
      } 
     } catch (SecurityException e) 
     { 
      Log.d("ERROR", e.getMessage()); 
     } 
     catch (IllegalArgumentException e) 
     { 
      Log.d("ERROR", e.getMessage()); 
     } catch (IllegalAccessException e) 
     { 
      Log.d("ERROR", e.getMessage()); 
     } 
} 
0

Aquí está la solución para no mostrar spinner año o selector de años en el selector de fechas de diálogo

try { 

     Field f[] = datePickerDialog.getClass().getDeclaredFields(); 
     for (Field field : f) { 
      if (field.getName().equals("mDatePicker")) { 
       field.setAccessible(true); 
       Object datePicker=new Object(); 
       datePicker=field.get(datePickerDialog); 
       Field[] fields=datePicker.getClass().getDeclaredFields(); 
       for(Field field1:fields){ 
        if(field1.getName().equals("mYearSpinner") || field1.getName().equals("mYearPicker")){ 
         field1.setAccessible(true); 
         Object ye=field1.get(datePicker); 
         ((View)ye).setVisibility(View.GONE); 
        } 
       } 
      } 
     } 
    } 
    catch (SecurityException e) { 
     Log.d("ERROR", e.getMessage()); 
    } 
    catch (IllegalArgumentException e) { 
     Log.d("ERROR", e.getMessage()); 
    } 
    catch (IllegalAccessException e) { 
     Log.d("ERROR", e.getMessage()); 
    } 
0

Un forro:

getDatePicker().findViewById(Resources.getSystem().getIdentifier("year", "id", "android")).setVisibility(View.GONE); 
Cuestiones relacionadas