web-dev-qa-db-fra.com

Comment changer le style d'un DatePicker dans Android?

Je souhaite modifier la couleur par défaut de la boîte de dialogue du sélecteur de date/heure dans Android, afin qu'elle corresponde au thème de mon application. J'ai cherché la solution sur Google, mais je n'ai pas trouvé de solution.

Ce que je faisais était de créer un nouveau style: 

  <style name="datepicker" parent="@Android:style/Widget.DeviceDefault.DatePicker">
    <!---TODO-->
    <item name="Android:focusedMonthDateColor">@Android:color/holo_red_dark</item>
</style>

Je ne sais pas quels sont les attributs disponibles pour le dialogue du sélecteur de date. Ce serait formidable si quelqu'un pouvait poster un lien à ce sujet

et après avoir ajouté le style que je l'appelais dans mon style principal

 <item name="Android:datePickerStyle">@style/datepicker</item>

Malheureusement, cela n'a pas du tout fonctionné pour moi.

27
silverFoxA

Essaye ça. C'est le moyen le plus simple et le plus efficace

<style name="datepicker" parent="Theme.AppCompat.Light.Dialog">
        <item name="colorPrimary">@color/primary</item>
        <item name="colorPrimaryDark">@color/primary_dark</item>
        <item name="colorAccent">@color/primary</item>
</style>
49
silverFoxA

appeler comme ça

 button5.setOnClickListener(new View.OnClickListener() {

 @Override
 public void onClick(View v) {
 // TODO Auto-generated method stub

 DialogFragment dialogfragment = new DatePickerDialogTheme();

 dialogfragment.show(getFragmentManager(), "Theme");

 }
 });

public static class DatePickerDialogTheme extends DialogFragment implements DatePickerDialog.OnDateSetListener{

     @Override
     public Dialog onCreateDialog(Bundle savedInstanceState){
     final Calendar calendar = Calendar.getInstance();
     int year = calendar.get(Calendar.YEAR);
     int month = calendar.get(Calendar.MONTH);
     int day = calendar.get(Calendar.DAY_OF_MONTH);

//for one

//for two 

 DatePickerDialog datepickerdialog = new DatePickerDialog(getActivity(),
 AlertDialog.THEME_DEVICE_DEFAULT_DARK,this,year,month,day);

//for three 
 DatePickerDialog datepickerdialog = new DatePickerDialog(getActivity(),
 AlertDialog.THEME_DEVICE_DEFAULT_LIGHT,this,year,month,day);

// for four

   DatePickerDialog datepickerdialog = new DatePickerDialog(getActivity(),
 AlertDialog.THEME_HOLO_DARK,this,year,month,day);

//for five

 DatePickerDialog datepickerdialog = new DatePickerDialog(getActivity(),
     AlertDialog.THEME_HOLO_LIGHT,this,year,month,day);

//for six

 DatePickerDialog datepickerdialog = new DatePickerDialog(getActivity(),
 AlertDialog.THEME_TRADITIONAL,this,year,month,day);


     return datepickerdialog;
     }

     public void onDateSet(DatePicker view, int year, int month, int day){

     TextView textview = (TextView)getActivity().findViewById(R.id.textView1);

     textview.setText(day + ":" + (month+1) + ":" + year);

     }
     }

suivez cela, il vous donnera tous les types de style de sélecteur de date (copie de ceci)

http://www.Android-examples.com/change-datepickerdialog-theme-in-Android-using-dialogfragment/

enter image description here

enter image description here

enter image description here

56
Avinash Ajay Pandey

Pour changer les couleurs DatePicker (mode calendrier) au niveau de l'application, définissez les propriétés ci-dessous.

<style name="MyAppTheme" parent="Theme.AppCompat.Light">
    <item name="colorAccent">#ff6d00</item>
    <item name="colorControlActivated">#33691e</item>
    <item name="Android:selectableItemBackgroundBorderless">@color/colorPrimaryDark</item>
    <item name="colorControlHighlight">#d50000</item>
</style>

Voir http://www.zoftino.com/Android-datepicker-example pour d'autres styles personnalisés DatePicker

 zoftino DatePicker examples

18
Arnav Rao
Calendar calendar = Calendar.getInstance();
        DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(), R.style.DatePickerDialogTheme, new DatePickerDialog.OnDateSetListener() {
            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                Calendar newDate = Calendar.getInstance();
                newDate.set(year, monthOfYear, dayOfMonth);
                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy");
                String date = simpleDateFormat.format(newDate.getTime());                
            }

        }, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
        datePickerDialog.show();

Et utiliser ce style

<style name="DatePickerDialogTheme" parent="Theme.AppCompat.Light.Dialog">
        <item name="colorAccent">@color/colorPrimary</item>
</style>
9
Vinit Yadav

Comme les attributs AlertDialog.THEME sont obsolètes, lors de la création de DatePickerDialog, vous devez passer l’un de ces paramètres pour int themeResId

  • Android.R.style.Theme_DeviceDefault_Dialog_Alert
  • Android.R.style.Theme_DeviceDefault_Light_Dialog_Alert
  • Android.R.style.Theme_Material_Light_Dialog_Alert
  • Android.R.style.Theme_Material_Dialog_Alert
1
Levon Petrosyan

(J'utilise React Native; targetSdkVersion 22). J'essaie de modifier l'aspect d'une boîte de dialogue de sélection de date. La réponse acceptée n'a pas fonctionné pour moi, mais cela a fonctionné. J'espère que cet extrait aidera certains d'entre vous. 

<style name="CalendarDatePickerDialog"  parent="Theme.AppCompat.Light.Dialog">
    <item name="colorAccent">#6bf442</item>
    <item name="Android:textColorPrimary">#6bf442</item>
</style>
1
Nunchucks