Comment afficher le sélecteur de date pour Android avec seulement des champs de mois et d'année?

Je souhaite désactiver l'option de sélection de jour sur le sélecteur de date Android sdk. Toute configuration xml facile serait la meilleure

  • Quels sont les fichiers IML dans Android Studio?
  • Impossible de modifier la couleur du bouton radio sur Android
  • Créez un dessin personnalisé et utilisez-le en XML
  • Publiez une application privée Android pour plusieurs clients
  • Java.lang.ClassNotFoundException après avoir changé rien dans le projet, mais la mise à jour de eclipse android sdk
  • Android n'offre que l'image de la galerie
  • L'insertion de milliers d'entrées de contact à l'aide de applyBatch est lente
  • Erreur: échec d'exécution pour la tâche ': application: transformClassesWithDexForDebug'
  • Android, background, layer-list et l'élément de bitmap évolutif
  • Keytool avec Android Facebook SDK
  • Quelles sont les différences entre R.styleable, R.style et R.attr?
  • La méthode onActivityResult n'est pas appelée Android
  • 7 Solutions collect form web for “Comment afficher le sélecteur de date pour Android avec seulement des champs de mois et d'année?”

    Je viens d'avoir publié un nouveau cadre de sélection de date qui vous permet de créer un sélecteur de date personnalisé. J'ai également fourni quelques exemples de sélection de date comme celui que vous recherchez. J'espère que cela fonctionne pour vous.

    Le code peut être trouvé ici: https://github.com/bendemboski/DateSlider

    MISE À JOUR 06/2014: Cette bibliothèque a été développée en 2010 et n'a pas été mise en place depuis 2011. Il est donc très probable que cette date soit dépassée.

    Il est possible de pirater l'instance DatePicker en utilisant la réflexion. De cette façon, vous pouvez accéder à l'instance NumberPicker qui représente le jour dans DatePicker:

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

    Parlant de réflexion, cela fonctionne dans Android 4.4.2 SDK

     "mDaySpinner" 

    au lieu

     "mDayPicker" 

    Je pense que c'est la meilleure solution

      datePicker.findViewById(Resources.getSystem().getIdentifier("day", "id", "android")).setVisibility(View.GONE); 

    EDIT: selon le commentaire ci-dessous, je ne suivrais plus cette réponse.

    Je ne pense pas que vous pouvez le faire avec le sélecteur de date par défaut. Vous devrez le créer à partir d'éléments d'interface UI basiques. Mais au lieu d'aller à ce problème, pourquoi ne pas utiliser un meilleur élément de bibliothèque comme cette magnifique roue iPhone-esque: http://code.google.com/p/android-wheel/ Je ne l'ai pas encore utilisé, mais Je prévois!

    Cela fonctionne bien en version 2.2. Mais le titre de la boîte de dialogue n'est pas modifié.

     for (Field datePickerDialogField : datePickerDialogFields) { if (datePickerDialogField.getName().equals("mDatePicker")) { datePickerDialogField.setAccessible(true); DatePicker datePicker = (DatePicker) datePickerDialogField.get(datePickerDialog); Field datePickerFields[] = datePickerDialogField.getType().getDeclaredFields(); for (Field datePickerField : datePickerFields) { if ("mDayPicker".equals(datePickerField.getName())) { datePickerField.setAccessible(true); Object dayPicker = new Object(); dayPicker = datePickerField.get(datePicker); ((View) dayPicker).setVisibility(View.GONE); } } } } 

    Vous pouvez utiliser le widget https://github.com/SimonVT/android-datepicker pour une compatibilité annulée et faire en sorte que le jour se déplace 'disparu'

     <net.simonvt.numberpicker.NumberPicker android:id="@+id/day" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="16dip" android:layout_marginRight="16dip" android:focusable="true" android:focusableInTouchMode="true" android:visibility="gone" /> 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.