Alterar programaticamente o valor de um recurso de cor obtido da resposta da API
Digamos, na minha chamada à API, eu tenho um parâmetro chamadocolor
. É possível editar ou modificar um existenteR.colors.color
atribuir a cor do resultado da API?
Como um exemplo:
Eu faço uma chamada para minha API e ela retornagreen
, agora quero carregar meu aplicativo com (verde)Toolbar
verdeTextView
cor, etc.), isso é possível?
Meu primeiro pensamento foi:
Crie um item emcolors.xml
chamadodemo
em seguida, atribua a ele uma cor padrão e use estedemo
cor onde eu quiser (Button
, TextView
, etc.) Então, pensei que seria possível alterar esse valor programaticamente com o resultado da API para não precisar criar umSharedPreferences
ou algo assim e para evitar mais código.
Como@ Y.S. me disse
Infelizmente, você precisará definir a cor do texto ou exibir manualmente em todos os lugares ... :(
Eu gostaria que houvesse outra maneira de fazer isso, já que não sei quantasActivities
meu projeto conterá, portanto, se houver outra maneira de fazê-lo, fico feliz em ouvir outras suposições.
Estou tentando a resposta de @Jared Rummler e talvez esteja fazendo algo errado ... Criei uma simplesJson
e coloco meus ativos, analiso oJson
e eu coloco em umGlobalConstant
então eu fiz um "aplicativo simples".
Primeiro de tudo eu tenho umTextView
e umButton
que contém o "your_special_color", e no retorno dele eu coloquei oGlobalConstant int
do seguinte modo :
case "your_special_color":
return GlobalConstant.color;
Então o que eu tentei é o meu primeiroActivity
tem 1TextView
e 1Button
como eu disse antes e eles têm a cor "your_special_color" que eu não quero mudar, mas tenho umIntent
no meuButton
para abrir o outroActivity
que contém o mesmo, mas com oGlobalConstant.color
e isso não muda.
Eu tentei fazer isso (minha segunda atividade):
public class Main2Activity extends AppCompatActivity {
private Res res;
@Override public Resources getResources() {
if (res == null) {
res = new Res(super.getResources());
}
return res;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
}
Perdi algo?
Oh .. eu descobri que acho que está fazendo isso no meuMainActivity2
?
Button btn = (Button)findViewById(R.id.button2);
btn.setBackgroundColor(res.getColor(R.color.your_special_color));