Die Resources.getColor(int id)
Methode ist veraltet.
@ColorInt
@Deprecated
public int getColor(@ColorRes int id) throws NotFoundException {
return getColor(id, null);
}
Was sollte ich tun?
Die Resources.getColor(int id)
Methode ist veraltet.
@ColorInt
@Deprecated
public int getColor(@ColorRes int id) throws NotFoundException {
return getColor(id, null);
}
Was sollte ich tun?
Antworten:
Ab Android Support Library 23 wurde
eine neue Methode getColor () hinzugefügt
ContextCompat
.Seine Beschreibung aus dem offiziellen JavaDoc:
Also, rufen Sie einfach an :
Sie können den
ContextCompat.getColor()
Quellcode auf GitHub überprüfen .quelle
tl; dr:
Erläuterung:
Sie müssen ContextCompat.getColor () verwenden , das Teil der Support V4-Bibliothek ist (es funktioniert für alle vorherigen APIs).
Wenn Sie die Support-Bibliothek noch nicht verwenden, müssen Sie dem
dependencies
Array in Ihrer App die folgende Zeile hinzufügenbuild.gradle
(Hinweis: Dies ist optional, wenn Sie die Appcompat-Bibliothek (V7) bereits verwenden ):Wenn Sie sich für Themen interessieren, wird in der Dokumentation Folgendes angegeben:
quelle
M
die zurück Farbe wird für den angegebenen Kontext des Themas gestylt werden. “ContextCompat
stammt die Klasse von SupportV4. AppcompatV7 funktioniert auch, da es auf SupportV4 basiert. Wie sie sagen auf der Support Library Dokumentation ,This library depends on the v4 Support Library. If you are using Ant or Eclipse, make sure you include the v4 Support Library as part of this library's classpath.
. Es ist also sinnvoll,AppcompatV7
die Antwort nicht einzugeben.Ich möchte die Support-Bibliothek nicht nur für getColor einbinden , also verwende ich so etwas wie
Ich denke, der Code sollte einwandfrei funktionieren und der veraltete Code
getColor
kann nicht aus der API <23 verschwinden.Und das verwende ich in Kotlin:
quelle
In Android Marshmallow sind viele Methoden veraltet.
Zum Beispiel, um Farbe zu verwenden
Auch zum Zeichnen verwendbar
quelle
Für alle Kotlin-Benutzer da draußen:
quelle
val color = ContextCompat.getColor(context, R.color.colorPrimary)
. Die Variable "it" kann alles sein, muss aber ein Kontext sein .it
ist in diesem Fall dascontext
, da ich benutze umcontext?.let {
zu prüfen ob dascontext
nicht null ist. Die FunktiongetColor()
akzeptiert nur einen Nicht-Null-Kontext. Lesen Sie hier mehr darüberlet
und wie man es benutzt: kotlinlang.org/docs/reference/scope-functions.html#letIn Ihrer RecyclerView in Kotlin
quelle
Verwenden Sie die
getColor(Resources, int, Theme)
Methode vonResourcesCompat
aus der Android Support Library.Ich denke, es spiegelt Ihre Frage besser wider als die,
getColor(Context, int)
nach derContextCompat
Sie gefragt habenResources
. Vor API-Level 23 wird das Thema nicht angewendet und die Methode ruft auf,getColor(int)
aber Sie erhalten keine veraltete Warnung. Das Thema kann auch seinnull
.quelle
Wenn Sie die Ressourcen nicht unbedingt benötigen, verwenden Sie
parseColor(String)
:Color.parseColor("#cc0066")
quelle
Wenn Ihre aktuelle min. Die API-Ebene ist 23, Sie können sie einfach so verwenden,
getColor()
wie wir sie verwenden, um Zeichenfolgenressourcen abzurufen, indem SiegetString()
:Sie können Einschränkungen für API-Ebenen unter 23 festlegen:
aber um es einfach zu halten, können Sie wie folgt als akzeptierte Antwort tun:
Aus Ressourcen .
Von ContextCompat AndroidX .
Vom ContextCompat-Support
quelle
Ich war auch frustriert. Mein Bedürfnis war sehr einfach. Alles, was ich wollte, war die ARGB-Farbe aus den Ressourcen, also schrieb ich eine einfache statische Methode.
quelle