je souhaite désactiver l'option de sélection des jours sur le sélecteur de date Android sdk. toute configuration xml facile serait la meilleure
Je viens de publier un nouveau cadre de sélection de date qui vous permet de créer un sélecteur de date personnalisé. J'ai également fourni des exemples de sélecteurs 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
UPDATE 06/2014: Cette bibliothèque a été développée en 2010 et n'est plus entretenue depuis 2011. Elle est donc probablement obsolète.
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());
}
En 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 puissiez faire cela avec le sélecteur de date par défaut. Vous devrez le créer à partir d'éléments de base de l'interface utilisateur Android. Mais au lieu d’avoir cette difficulté, pourquoi ne pas utiliser un meilleur élément de bibliothèque, comme cette superbe roue iPhone-esque: http://code.google.com/p/Android-wheel/ Je n’ai pas utilisé encore, mais je prévois!
Cela fonctionne très bien dans la version 2.2. Mais le titre du dialogue n'est pas changé.
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);
}
}
}
}
Pour se cacher:
datePicker.findViewById(Resources.getSystem().getIdentifier("day", "id", "Android")).setVisibility(View.GONE);
Et
Pour cacher mois:
datePicker.findViewById(Resources.getSystem().getIdentifier("month", "id", "Android")).setVisibility(View.GONE);
Vous pouvez utiliser le https://github.com/SimonVT/Android-datepicker widget pour la compatibilité avec le port précédent et rendre le sélecteur de jour 'parti'
<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"
/>