So ändern DatePicker ist CalendarView die Hintergrundfarbe in Lollipop?

Ich so hart gearbeitet haben, ändern Sie die Standard-Hintergrundfarbe von Lollipop ' s DatePicker. Ich kann einfach nicht verwenden Styleable attrs zum ändern der Standard-Formatvorlage. Und wie bereits erwähnt in einem anderen post, ich kann nur Reflexion zu finden, die Ansicht, und klicken Sie dann auf es.

z.B.

if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    int monthDayYearLayoutId = Resources.getSystem().getIdentifier("date_picker_month_day_year_layout", "id", "android");
    if (monthDayYearLayoutId != 0) {
        View monthDayYearLayout = datePicker.findViewById(monthDayYearLayoutId);
        if (monthDayYearLayout != null) {
            monthDayYearLayout.setBackgroundColor(getResources().getColor(R.color.colorful));
        } 
    } 
} 

Allerdings bin ich nur in der Lage, den Zugriff auf die Obere Hälfte des DatePicker (siehe unten).

DatePicker-Obere Hälfte
So ändern DatePicker ist CalendarView die Hintergrundfarbe in Lollipop?

Jedoch für die untere Hälfte, die ist ein CalendarView (siehe unten), die ich nicht ändern kann mit dem gleichen Ansatz, wie ich finde nicht der Ansicht (ich habe versucht zu finden, den Blick von der id R. id.calendar_view, doch es funktioniert nicht.).

DatePicker in der unteren Hälfte
So ändern DatePicker ist CalendarView die Hintergrundfarbe in Lollipop?

Um genau zu sein, ich würde gerne den hintergrund ändern, die Farbe von den eingekreisten Datum und die Textfarbe für den aktuellen Tag (in diesem Fall ist es der 7. März 2014)

Irgendwelche Tipps? Vielen Dank.

Updates:

Nachdem wir uns durch den docs, ich fand, dass die untere Hälfte der Kalender ist in der Tat eine SimpleMonthView.class und der hintergrund-Farbe des Kreises und die Textfarbe für den heutigen Tag sind beide unterliegen dem param (int) mSelectedDayColor.

    mSelectedDayColor = colors.getColorForState(ENABLED_SELECTED_STATE_SET,
            res.getColor(R.color.holo_blue_light));

Kann ich nicht verwenden Sie die Vorherige Methode, da der Kalender wird erstellt in der onDraw-Methode programmgesteuert, aber nicht durch aufblasen einer layout-Datei.

Also das problem läuft darauf hinaus, - wie könnte ich das ändern die Ressource-Wert für mSelectedDayColor?

Dank..

Updates:
Nach der Arbeit auf alanv Lösung, ich versuchte dies:
Da arbeite ich an Lollipop ' s DatePicker ist, lege ich die folgenden in v21-styles.xml:

<style name="MyCalendarView" parent="@android:style/Widget.CalendarView">
    <item name="android:showWeekNumber">true</item>
    <item name="android:minDate">01/01/2016</item>
    <item name="android:maxDate">12/31/2100</item>
    <item name="android:shownWeekCount">6</item>
    <item name="android:selectedWeekBackgroundColor">#330099FF</item>
    <item name="android:focusedMonthDateColor">#FFFFFFFF</item>
    <item name="android:unfocusedMonthDateColor">#66FFFFFF</item>
    <item name="android:weekNumberColor">#33FFFFFF</item>
    <item name="android:weekSeparatorLineColor">#19FFFFFF</item>
</style>

Und ich änderte einige der Standard-Werte, zB. android:minDate.

Und in meinem activity_main.xml,

<DatePicker
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/date_picker"
    android:layout_centerHorizontal="true"
    android:theme="@style/MyCalendarView"/>

Aber es gibt keine Auswirkungen auf DatePicker für Lollipop.

InformationsquelleAutor Derekyy | 2015-03-20
Schreibe einen Kommentar