Angenommen, ich habe bei meinem API-Aufruf einen Parameter, der aufgerufen wird color
. Ist es möglich, eine vorhandene zu bearbeiten oder zu ändern R.colors.color
, um die Farbe aus dem API-Ergebnis zuzuweisen?
Als Beispiel:
Ich rufe meine API auf und sie kehrt zurück green
. Jetzt möchte ich meine App mit dh (grün Toolbar
, grüne TextView
Farbe usw.) laden. Ist das möglich?
Mein erster Gedanke war:
Erstellen Sie auf ein Element colors.xml
namens demo
dann eine Standardfarbe zuweisen, dann diese verwenden demo
Farbe wohin ich will ( Button
, TextView
usw.) Dann dachte ich , könnte es möglich sein , diesen Wert zu ändern programmatisch mit dem Ergebnis aus der API so dass ich nicht brauchen würde , Erstellen Sie ein SharedPreferences
oder ähnliches und vermeiden Sie mehr Code.
Wie @YS zu mir sagte
Leider müssen Sie die Farbe des Textes oder der Ansicht überall manuell einstellen ... :(
Ich würde gerne wissen, ob es einen anderen Weg gibt, da ich nicht weiß, wie viele Activities
mein Projekt enthalten wird. Wenn es also einen anderen Weg gibt, bin ich froh, andere Vermutungen zu hören.
BEARBEITEN
Ich versuche die @ Jared Rummler Antwort und vielleicht mache ich etwas falsch ... Ich habe eine einfache erstellt Json
und ich habe meine Assets aufgelegt, ich analysiere die Json
und ich habe sie auf eine gelegt, GlobalConstant
dann habe ich eine "einfache App" gemacht.
Zuallererst habe ich ein TextView
und ein, Button
das die "your_special_color" enthält, und die Rückgabe davon habe ich GlobalConstant int
wie folgt ausgedrückt :
case "your_special_color":
return GlobalConstant.color;
Dann habe ich versucht, meine erste Activity
hat 1 TextView
und 1, Button
wie ich bereits sagte, und sie haben die Farbe "your_special_color", die ich nicht ändern möchte, ABER ich habe eine Intent
auf meiner Button
, um die andere zu öffnen Activity
, die die gleiche enthält, aber mit der GlobalConstant.color
und es ändert sich nicht.
Ich habe es dabei versucht (meine zweite Aktivität):
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);
}
Habe ich etwas verpasst?
Oh ... ich habe es herausgefunden, ich denke, macht das auf meinem MainActivity2
?
Button btn = (Button)findViewById(R.id.button2);
btn.setBackgroundColor(res.getColor(R.color.your_special_color));