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 TextViewFarbe usw.) laden. Ist das möglich?
Mein erster Gedanke war:
Erstellen Sie auf ein Element colors.xmlnamens demodann eine Standardfarbe zuweisen, dann diese verwenden demoFarbe wohin ich will ( Button, TextViewusw.) 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 SharedPreferencesoder ä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 Activitiesmein 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 Jsonund ich habe meine Assets aufgelegt, ich analysiere die Jsonund ich habe sie auf eine gelegt, GlobalConstantdann habe ich eine "einfache App" gemacht.
Zuallererst habe ich ein TextViewund ein, Buttondas die "your_special_color" enthält, und die Rückgabe davon habe ich GlobalConstant intwie folgt ausgedrückt :
case "your_special_color":
return GlobalConstant.color;
Dann habe ich versucht, meine erste Activityhat 1 TextViewund 1, Buttonwie ich bereits sagte, und sie haben die Farbe "your_special_color", die ich nicht ändern möchte, ABER ich habe eine Intentauf meiner Button, um die andere zu öffnen Activity, die die gleiche enthält, aber mit der GlobalConstant.colorund 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));