Ist es möglich, das Farbschema des Datepickers (und auch des Timepickers) für Android 5.0 zu ändern?
Ich habe versucht, die Akzentfarben einzustellen, aber das funktioniert nicht (sowohl mit als auch ohne android:
):
<!-- colorPrimary is used for the default action bar background -->
<item name="colorPrimary">@color/purple</item>
<!-- colorPrimaryDark is used for the status bar -->
<item name="colorPrimaryDark">@color/purple_tint</item>
<!-- colorAccent is used as the default value for colorControlActivated
which is used to tint widgets -->
<item name="colorAccent">@color/purple_tint</item>
Vom Original:
Zu so etwas:
android
dialog
styles
background-color
Warpzit
quelle
quelle
Antworten:
Der Grund, warum Neils Vorschlag zu einem Vollbild führt,
DatePicker
ist die Wahl des übergeordneten Themas:Wenn Sie diesen Weg gehen, müssen Sie außerdem das Thema angeben, während Sie Folgendes erstellen
DatePickerDialog
:Das ist meiner Meinung nach nicht gut. Man sollte versuchen, das Styling von Java und innerhalb von styles.xml / theme.xml fernzuhalten.
Ich bin damit einverstanden, dass Neils Vorschlag mit ein wenig Änderung (Änderung des übergeordneten Themas
Theme.Material.Light.Dialog
) das gewünschte Ergebnis bringt. Aber hier ist der andere Weg:Bei der ersten Betrachtung stoßen wir auf
datePickerStyle
Dinge, die Folgendes definieren:headerBackground
(was Sie ändern möchten)dayOfWeekBackground
und einige andere Textfarben und Textstile.Das Überschreiben dieses Attributs im Thema Ihrer App funktioniert nicht.
DatePickerDialog
verwendet ein separates Thema, das vom Attribut zugewiesen werden kanndatePickerDialogTheme
. Also, für unsere Änderungen zu aktivieren , müssen wir außer KraftdatePickerStyle
innerhalb eines überschriebenendatePickerDialogTheme
.Auf geht's:
Überschreiben
datePickerDialogTheme
Sie das Basisthema Ihrer App:Definieren
MyDatePickerDialogTheme
. Die Auswahl des übergeordneten Themas hängt vom Basisthema Ihrer App ab: Es kann entwederTheme.Material.Dialog
oder seinTheme.Material.Light.Dialog
:Wir haben
datePickerStyle
mit dem Stil überschriebenMyDatePickerStyle
. Die Wahl des Elternteils hängt wiederum vom Hauptthema Ihrer App ab: entwederWidget.Material.DatePicker
oderWidget.Material.Light.DatePicker
. Definieren Sie es gemäß Ihren Anforderungen:Derzeit überschreiben wir nur
headerBackground
die Standardeinstellung?attr/colorAccent
(aus diesem Grund funktioniert der Neil-Vorschlag auch beim Ändern des Hintergrunds). Es sind jedoch viele Anpassungen möglich:Wenn Sie nicht so viel Kontrolle (Anpassung) wünschen, müssen Sie nicht überschreiben
datePickerStyle
.colorAccent
steuert die meistenDatePicker's
Farben. Das Überschreiben direkt imcolorAccent
InnerenMyDatePickerDialogTheme
sollte also funktionieren:Aufschalten
colorAccent
gibt Ihnen den zusätzlichen Vorteil der ÄnderungOK
&CANCEL
Textfarben auch. Nicht schlecht.Auf diese Weise müssen Sie dem
DatePickerDialog's
Konstruktor keine Styling-Informationen bereitstellen . Alles wurde richtig verkabelt:quelle
Probieren Sie es aus.
Der Code
Der Stil In Ihrer Datei styles.xml
BEARBEITEN - Das Thema wurde wie vorgeschlagen in Theme.AppCompat.Light.Dialog geändert
quelle
parent="Theme.AppCompat.Light.Dialog"
anstelle vonparent="Theme.AppCompat.Light"
Erstellen Sie einen neuen Stil
Java-Code:
Das übergeordnete Thema ist hier der Schlüssel. Wählen Sie Ihren colorAccent
Ergebnis:
quelle
versuche das, arbeite für mich
Setzen Sie die beiden Optionen
colorAccent
undandroid:colorAccent
quelle
Um nur zu erwähnen, können Sie
android.R.style.Theme_DeviceDefault_Light_Dialog
stattdessen auch das Standardthema wie verwenden.quelle
Sie müssen kein Thema erstellen, sondern schreiben es einfach in Ihr Dialogerstellungsobjekt
Befolgen Sie diese Anweisungen, um alle Arten der Datumsauswahl zu erhalten. Es funktioniert wirklich
http://www.android-examples.com/change-datepickerdialog-theme-in-android-using-dialogfragment/
quelle
quelle
Ich hatte das Problem, dass auf dem Bildschirm für API 24 in Android keine Zeitauswahlschaltflächen angezeigt wurden. (API 21+) wird gelöst durch
quelle
Zum Ändern der Textfarbe des Listenelements für das Jahr (SPEZIFISCH FÜR ANDROID 5.0)
Stellen Sie einfach eine bestimmte Textfarbe in Ihrem Datumsauswahl-Dialogstil ein. Aus irgendeinem Grund
yearListItemTextAppearance
spiegelt das Setzen des Flags keine Änderung der Jahresliste wider.quelle