Nascondi field Anno in Android DatePicker?

Sto utilizzando un DataPicker di base e sto cercando di capire come hide il field dell'anno sul DataPickerDialog in modo che solo il mese e il giorno siano visibili. Non mi dispiace che il codice sottostante dell'anno fosse ancora presente, vorrei solo hide il field dell'anno nel dialogo. Sai con qualcosa di simile:

((View) myYear).setVisibility(View.GONE); 

che io conosco non funziona perché myYear è un int non una vista, ma qualcosa in quelle linee. È ansible?

  • Socket TCP Trasferimento dati da PC a dispositivo Android (Android NDK)
  • android LocationManager.requestLocationUpdates con minTime> 0 non funziona come previsto
  • Le barre di stato di Android vengono tinte da kitkat a lollipop
  • Problema di sorting di stack di attività quando si lancia l'applicazione dal programma di installazione di Android e dalla schermata Home
  • Come preservare le interruzioni di linea nelle risorse di xml <string> in Android?
  • Come passare i dati tra i frammenti?
  • Come eliminare la vernice della dita?
  • Sony SmartWatch - invoca l'app su Smart Watch quando riceve un evento
  • Cosa succede ad un'AsyncTask quando l'attività di lancio viene arrestata / distrutta mentre è ancora in esecuzione?
  • suggerimento e visualizzazione di text con la gravità giusta e una singola linea
  • Calcola SHA256 Hash in Android / Java e C #
  • Come cambiare tutte le transizioni di attività contemporaneamente in un'applicazione Android?
  • 4 Solutions collect form web for “Nascondi field Anno in Android DatePicker?”

    Un modo super facile che ho trovato per implementare un DataPicker è chiamarlo in xml:

      <DatePicker android:id="@+id/thePicker" android:layout_width="wrap_content" android:layout_height="wrap_content"/> 

    e quindi nascondi il field che vuoi (in questo caso l'anno) in java:

      picker = (DatePicker) findViewById(R.id.thePicker); try { Field f[] = picker.getClass().getDeclaredFields(); for (Field field : f) { if (field.getName().equals("mYearPicker")) { field.setAccessible(true); Object yearPicker = new Object(); yearPicker = field.get(picker); ((View) yearPicker).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()); } 

    Siate veramente attenti con questa soluzione. stai usando la riflessione per accedere a un field e cambiare la visibilità. Questo non funziona con Android 5.0! Google ha modificato l'implementazione di TimePicker e DatePicker e le classi non stanno più esponendo alcun field appart dal delegato.

    Non so ancora la soluzione per Android 5.0 +. Lo farò sapere appena ho trovato qualcosa di interessante.

    Come un'idea, potresti usare la versione di Build.VERSION.SDK_INT per controllare la versione Android e quindi cercare di accedere a DatePickerSpinnerDelegate utilizzando la riflessione e impostare il field desiderato.

    Ancora una volta, questa non è la soluzione ideale in quanto Google è libero di cambiare questo nuovo e nuovo …

    Facile modo per distriggersre il field Anno nel selezionatore di data

     DatePicker dp = findDatePicker((ViewGroup) dialog.getWindow().getDecorView()); if(dp != null) { ((ViewGroup) ((ViewGroup) dp.getChildAt(0)).getChildAt(0)).getChildAt(2).setEnabled(false); ((ViewGroup) ((ViewGroup) dp.getChildAt(0)).getChildAt(0)).getChildAt(2).setAlpha(0.4f); } 

    se si desidera rimuovere il solo field di visibilità della vista dei risultati del field di anno in View.GONE come segue

     dp.getChildAt(0)).getChildAt(0)).getChildAt(2).setVisibility(View.GONE) private DatePicker findDatePicker(ViewGroup group) { if (group != null) { for (int i = 0, j = group.getChildCount(); i < j; i++) { View child = group.getChildAt(i); if (child instanceof DatePicker) { return (DatePicker) child; } else if (child instanceof ViewGroup) { DatePicker result = findDatePicker((ViewGroup) child); if (result != null) return result; } } } return null; } 

    Ho riferito il link sottostante per il riferimento Rimuovere anno da DatePickerDialog

    È ansible impostare l'intervallo dell'anno utilizzando questa function

     datePicker.setYearRange(1950,2017); 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.