O Resources.getColor(int id)
método foi preterido.
@ColorInt
@Deprecated
public int getColor(@ColorRes int id) throws NotFoundException {
return getColor(id, null);
}
O que devo fazer?
O Resources.getColor(int id)
método foi preterido.
@ColorInt
@Deprecated
public int getColor(@ColorRes int id) throws NotFoundException {
return getColor(id, null);
}
O que devo fazer?
Respostas:
A partir da Biblioteca de suporte Android 23,
um novo método getColor () foi adicionado a
ContextCompat
.Sua descrição do JavaDoc oficial:
Então, basta ligar para :
Você pode verificar o
ContextCompat.getColor()
código fonte no GitHub .fonte
tl; dr:
Explicação:
Você precisará usar ContextCompat.getColor () , que faz parte da Biblioteca Support V4 (funcionará para todas as APIs anteriores).
Se você ainda não usa a Biblioteca de Suporte, precisará adicionar a seguinte linha à
dependencies
matriz dentro do seu aplicativobuild.gradle
(nota: é opcional se você já usa a biblioteca appcompat (V7) ):Se você se preocupa com temas, a documentação especifica que:
fonte
M
, a cor retornada será estilizada para o tema do contexto especificado " .ContextCompat
classe vem do SupportV4. O AppcompatV7 também funciona, pois depende do SupportV4. Como se costuma dizer na documentação da Biblioteca de Apoio ,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.
. Portanto, faz sentido nãoAppcompatV7
responder.Não quero incluir a biblioteca de suporte apenas para getColor , então estou usando algo como
Eu acho que o código deve funcionar muito bem, e o obsoleto
getColor
não pode desaparecer da API <23.E é isso que estou usando no Kotlin:
fonte
No Android Marshmallow, muitos métodos estão obsoletos.
Por exemplo, para obter cores, use
Também para obter uso extraível
fonte
Para todos os usuários do Kotlin por aí:
fonte
val color = ContextCompat.getColor(context, R.color.colorPrimary)
. A variável "it" pode ser qualquer coisa, mas precisa ser um Contexto .it
é neste caso ocontext
, desde que eu usocontext?.let {
para verificar se ocontext
não é nulo. A funçãogetColor()
aceita apenas um contexto não nulo. Leia mais aqui sobrelet
e como usá-lo: kotlinlang.org/docs/reference/scope-functions.html#letIn Your RecyclerView em Kotlin
fonte
Use o
getColor(Resources, int, Theme)
método da naResourcesCompat
Biblioteca de suporte do Android.Eu acho que isso reflete melhor a sua pergunta do que a
getColor(Context, int)
daContextCompat
desde que você perguntaResources
. Antes do nível 23 da API, o tema não seria aplicado e o método passaria para,getColor(int)
mas você não receberá o aviso preterido. O tema também pode sernull
.fonte
Se você não precisa necessariamente dos recursos, use
parseColor(String)
:Color.parseColor("#cc0066")
fonte
Se o seu min atual. O nível da API é 23, você pode simplesmente usar
getColor()
como estamos usando para obter recursos de stringgetString()
:Você pode restringir os níveis de API abaixo de 23:
mas, para simplificar, faça o seguinte abaixo como resposta aceita:
De Recursos .
De ContextCompat AndroidX .
De Suporte ContextCompat
fonte
Também fiquei frustrado. Minha necessidade era muito direta. Tudo o que eu queria era a cor ARGB dos recursos, então escrevi um método estático simples.
fonte