13

Ich möchte die Standardfarbe des Dialogfelds für die Datums-/Uhrzeitauswahl in Android ändern, damit sie mit dem Thema meiner App übereinstimmt. Ich habe auf Google nach der Lösung gesucht, konnte aber keine Lösung finden.Wie ändere ich den Stil eines DatePicker in Android?

Was ich tat, war, einen neuen Stil zu schaffen:

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

Sie wissen nicht, was die Attribute für Datumsauswahl Dialog sind. Es wäre toll, wenn jemand einen Link auf diesen

und nach dem Hinzufügen des Stil Post konnte ich es in meinem Haupt-Stil als

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

Leider rufen, dies gar nicht für mich arbeiten.

Antwort

31

Versuchen Sie dies. Es ist die einfachste & effizienteste Weg

<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> 
+0

@ShirishHerwade keine Verbindung gibt. Bitte kurz Ihre Anfrage – silverFoxA

32

Aufruf wie dieses

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); 

    } 
    } 

diese folgen Sie alle Arten Datumsauswahl Stil geben (Kopie von dieser)

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

enter image description here

enter image description here

enter image description here

+2

4-5 funktioniert nicht auf Android 7 – WolfJee

+3

@WolfJee Verwendung wie folgt; int Thema; if (Build.VERSION.SDK_INT <23) theme = AlertDialog.THEME_HOLO_DARK; sonst theme = android.R.style.Theme_Holo_Dialog; new DatePickerDialog (getActivity(), Thema, Datum, ...... – kaya

+0

toller Job, Sie rasieren meine Zeit – Ninja

3
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(); 

und benutzen Sie diesen Stil

<style name="DatePickerDialogTheme" parent="Theme.AppCompat.Light.Dialog"> 
     <item name="colorAccent">@color/colorPrimary</item> 
</style> 
+0

Es funktioniert für mich –

8

Um Farben Datepicker (Kalendermodus) auf Anwendungsebene unter Eigenschaften definieren zu ändern.

<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> 

http://www.zoftino.com/android-datepicker-example Sehen Sie für andere Datepicker benutzerdefinierte Stile

zoftino DatePicker examples