2010-05-10 1 views
5

Vorrei visualizzare un DatePicker dove il campo dell'anno sarebbe visibile o meno, in base a una casella di controllo.Visualizzazione di un DatePicker con o senza il campo dell'anno

Ma non ho trovato nulla che mi desse un modo per implementarlo.

Qualche idea per favore?

Grazie in anticipo.

+0

per quanto ne so che non è possibile almeno in Android sdk 1.5 – Jorgesys

+0

Penso che ti perderai le s tempo codificando un DatePicker che soddisfa tutte le tue esigenze. – Cristian

+0

È un requisito un po 'complicato dato che le date che sarebbero disponibili variano a seconda dell'anno ... Il consiglio di considerare la scrittura della propria versione (almeno per la versione anno non visibile) è probabilmente buona. – Adrian

risposta

1

Poiché non è possibile rimuovere il campo dell'anno da un DatePicker, alla fine decido di aggiungere un CheckBox "ignora il campo anno" per implementare una soluzione.

-1

Penso che il Any+Time™ DatePicker/TimePicker AJAX Calendar Widget potrebbe funzionare per voi. Ha la possibilità di scegliere quali campi utilizzare e un amico mi ha detto che funziona bene sul suo telefono Android. Basta verificare se la casella di controllo è selezionata e quindi creare il selettore con una stringa di formato che, in caso contrario, contiene o meno un identificatore dell'anno.

+0

Grazie, ma non voglio mescolare il mio codice con javascript, penso che complicherebbe troppo la mia applicazione. – tbruyelle

2

Dai uno sguardo allo DateSlider, una fantastica alternativa personalizzabile a DatePicker.

+0

Risolto .......... –

+0

Risolto ......... +1 – JoxTraex

2

impostare la Casella di controllo ascoltatore come vostro bisogno per visualizzare di casella

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

Ecco la soluzione per non mostrare filatore anno o anno selettore sulla data di dialogo selettore

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

uno di linea:

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