web-dev-qa-db-fra.com

Comment changer le style Datepicker pour Android

Je suis en train de créer un formulaire d'inscription et l'un des champs est celui de la date de naissance de l'utilisateur. Je souhaite utiliser datepicker, mais je ne souhaite pas que le calendrier soit présenté comme indiqué ci-dessous: 

 enter image description here

Je veux que la mise en page ressemble à ceci afin qu'il soit plus facile de choisir l'année et le mois sans avoir à tout faire défiler:

 enter image description here

Cependant, je ne sais pas comment s'y prendre, ni quoi mettre dans le fichier styles.xml. Toute aide serait grandement appréciée.

5
JulianMartinez23

Ajoutez ceci à style.xml

<style name="date_picker_theme" parent="@Android:style/Widget.DatePicker">

Et ensuite, vous devriez appliquer un style à votre sélecteur de date comme ceci:

<DatePicker
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:id="@+id/datePicker"
        style="@style/date_picker_theme" />
9
Victor V.

Créer un style avec

<style name="DatePicker" parent="@Android:style/Theme.Holo.Light">
    <item name="Android:datePickerStyle">@Android:style/Widget.DatePicker</item>
</style>

Puis dans la boîte de dialogue fragment personnalisée xml

<DatePicker
    Android:theme="@style/DatePicker"
    Android:id="@+id/fragment_date_picker_control"
    Android:datePickerMode="spinner"
    Android:spinnersShown="true"
    Android:calendarViewShown="false"
    Android:layout_marginLeft="@dimen/margin_normal"
    Android:layout_marginRight="@dimen/margin_normal"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_gravity="center_horizontal" />

Lien: http://yogeshkalwar.blogspot.fr 2017/08/custom-spinner-datepicker-supporting-n70.html

2
yogikalwar

Pour définir le style DatePicker globalement, ajoutez ce qui suit à style.xml ou ajustez le contenu existant:

<resources>
  <style name="AppTheme" parent="@style/Theme.AppCompat.Light">
    <item name="Android:datePickerStyle">@style/MyDatePicker</item>
  </style>
  ...
</resources>

Et définissez votre style DatePicker personnalisé, soit dans style.xml, soit dans un fichier séparé, par exemple:

<resources>
  <style name="MyDatePicker" parent="@Android:style/Widget.DatePicker">
    <item name="Android:calendarViewShown">false</item>
    <item name="Android:datePickerMode">spinner</item>
  </style>
</resources>
0
Bjørn Egil

Les propriétés ci-dessus sont du XML, si vous voulez le définir par programme, vous pouvez utiliser le code ci-dessous, mais je n'ai pas vérifié si ce code fonctionnait ou non. 

datepickerDialog_object.getDatePicker().setSpinnersShown(true);
datepickerDialog_object.getDatePicker().setCalendarViewShown(false);
0
Anshul Verma

DatePickerDialog a une méthode pratique, où vous définissez la disposition souhaitée.

public DatePickerDialog(@NonNull Context context, @StyleRes int themeResId,
        @Nullable OnDateSetListener listener, int year, int monthOfYear, int dayOfMonth) {
    this(context, themeResId, listener, null, year, monthOfYear, dayOfMonth);
}


public static final int MODE_SPINNER = 1;
public static final int MODE_CALENDAR = 2;

Passer 1 ou 2 dans themesResId fait l'affaire.

0