Ich verwende appcompat v21.0.3 für meine App. Ich habe alles so gemacht, wie es hier geschrieben ist: android-developers.blogspot .com / 2014/10 / appcompat-v21-Material-Design-for-Pre.html
Aber auf Lollipop (und auf älteren Geräten natürlich), sind einige Widget nicht mit meiner Akzentfarbe getönt. Zum Beispiel:
SwitchCompat ist getönt:
ListPreference ist NICHT getönt
ProgressDialog ist NICHT getönt
Hier ist mein Code:
build.gradle
%Vor%AndroidManifest.xml
%Vor%themes.xml
%Vor%colors.xml
%Vor%Hat jemand eine Idee?
UPDATE: Stand Juni 2015 funktioniert immer noch nicht, aber ich habe Ссылка verwendet. Funktioniert wirklich gut für Dialoge, einschließlich ListPreferences.
Folgen Sie den Anweisungen unten
Sofern nicht anders angegeben, gelten alle folgenden Tönungen für Lollipop und Pre-Lollipop mit AppCompat v21. Um die Unterstützungsversion dieser Attribute zu verwenden, entfernen Sie den android-Namespace. Zum Beispiel wird "android: colorControlNormal" zu "colorControlNormal". Diese Attribute werden an die entsprechenden Attribute im Android-Namespace für Geräte weitergegeben, auf denen Lollipop ausgeführt wird. Alle Ausnahmen werden durch das Hinzufügen des Präfixes "android:" angezeigt.
%Vor% P.S. tönung funktioniert standardmäßig nur mit Whitelist-Symbolen (siehe TintManager
source code). Zum Beispiel ist das Zurückpfeil-Symbol% co_de% getönt, aber das Kopieren dieser exakten Datei und das Umbenennen führen dazu, dass das Symbol bei der Aufnahme eines zufälligen Bildes nicht getönt wird, und wenn es in "abc_ic_ab_back_mtrl_am_alpha"
umbenannt wird, wird es getönt. Die Tönung kann in XML in Lollipop erfolgen, indem eine "abc_ic_ab_back_mtrl_am_alpha"
xml-Datei in Zeichen erstellt und das <bitmap>
-Attribut angewendet wird. Dieses Symbol kann sowohl in Lollipop als auch in Pre-Lollipop verwendet werden, wird jedoch nur in Lollipop getönt. Das Tönen von Aktionssymbolen kann auch programmgesteuert mit einem "android:tint"
erfolgen.
Sie sollten in der Regel eine eigene Fortschrittsleiste anstelle eines Dialogs verwenden und dann eine getönte Version erstellen, die sowohl auf L als auch auf Vor-L funktioniert:
%Vor% Wenn Sie wirklich die Farbe im Dialog ändern wollten, finden Sie die verschachtelte Fortschrittsleiste wahrscheinlich in dialog.findViewById(android.R.id.progess)
Es beantwortet nur einen Teil Ihrer Frage, aber der Fortschrittsbalkenstil aus der appcompat-Bibliothek nimmt die Akzentfarbe auf Lollipop noch nicht auf, auch nicht außerhalb von ProgressDialog
.
Sie müssen es selbst einrichten, zum Beispiel mit diesem Stil:
%Vor%, die Sie dann auf eine ProgressBar
oder eine ContentLoadingProgressBar
anwenden können. (Beachten Sie, dass ein Elternelement, in dem der Fortschrittsbalken aufgebläht ist, offensichtlich das Thema anwenden muss, das das Attribut colorAccent
definiert; andernfalls verwenden Sie eine direkte Farbressource)
Wenn Sie den Fortschrittsbalken in ein Dialogfeld integrieren möchten, da ich glaube nicht, dass Sie können auf diese Antwort um die oben genannten Fortschrittsbalkenattribute auf einen Dialog anzuwenden. ProgressDialog
die Anpassung seines Fortschrittsbalkens über den Typ hinaus unterstützt, müssen Sie möglicherweise ein AlertDialog
mit einrichten ein Fortschrittsbalken, der das oben genannte Thema anwendet, oder einfach mit einem benutzerdefinierten Dialogfeld gehen, denke ich
Soweit ich weiß, wird alles in einem Dialog (noch) nicht automatisch in Lollipop eingefärbt. Checkout Material-Dialoge , eine Bibliothek, die das automatisch für Sie erledigt (unterstützt aber nur API 14 +).
>Beantworte die Antworten auf eine ähnliche Frage: Android v21 Theme.Appcompat Farbakzent wird ignoriert, kein Auffüllen von Dialogen
Tags und Links android android-widget appcompat android-5.0-lollipop