Se eu definisse uma cor em recursos
<resources>
<color name="someColor">#123456</color>
</resources>
é possível definir a cor por seu id, como
view.setTextColor(R.color.someColor);
Também é possível obter o valor da string de cores de colors.xml?
Algo como
colorStr = getColor(R.color.someColor);
// -> colorStr = "#123456"
Se sim, alguém pode dar um exemplo?
Obrigado
//noinspection ResourceType
pouco acima de sua declaração.getResources().getString(0+R.color.someColor);
obrasApenas por uma questão de cópia fácil:
Ou se você quiser sem a transparência:
fonte
'#' + Integer.toHexString(getResources().getColor(R.color.someColor);
pois mais tarde estava usando emColor.parseColor
As respostas fornecidas acima não são atualizadas.
Tente este, por favor
fonte
Todas as soluções aqui usando
Integer.toHexString()
break se você tivesse zeros à esquerda em sua string hexadecimal. Cores como#0affff
resultariam em#affff
. Em vez disso, use:ou com alfa:
fonte
Causa
getResources().getColor
necessidade de api> 23. Portanto, é melhor: apenas para copiar e colar facilmente:Integer.toHexString( ContextCompat.getColor( getContext(), R.color.someColor ) );
Ou se você quiser sem a transparência: `
Integer.toHexString( ContextCompat.getColor( getContext(), R.color.someColor ) & 0x00ffffff );
fonte
ContextCompat.getColor
não aceita 3 argumentosPara API acima de 21, você pode usar
Isso retornará a cor em um formato de string. Para converter isso em uma cor em formato inteiro (às vezes, apenas inteiros são aceitos), então:
A expressão acima retorna o equivalente inteiro da cor definida no arquivo color.xml
fonte
Adicione @SuppressLint ("ResourceType") se ocorrer um erro. Como abaixo.
fonte
Não acho que haja funcionalidade padrão para isso. No entanto, você pode transformar o valor de retorno de
getColor()
hexadecimal e transformar o valor hexadecimal em string.hex 123456 = int 1193046;
fonte
É assim que eu fiz:
fonte
Funciona para mim!
fonte
Se você não quiser usar
ContextCompat
ouSuppressLint
, basta adicionar umstring
recurso logo abaixo do seucolor
.Ao invés de
Usar
Seu código fica mais repetitivo, mas é muito mais limpo. Além disso, esquecer de atualizar os
string
após a trocacolor
é quase impossível, pois eles estão um ao lado do outro.fonte