Programmgesteuert ändern Sie den Wert einer Farbe Ressource, gewonnen aus der API-Antwort

Sagen wir mal, auf mein API-Aufruf habe ich einen parameter, der heißt color. Ist es möglich zu Bearbeiten oder ändern Sie einen existierenden R.colors.color zuordnen, um die Farbe aus der API-Ergebnis?

Als Beispiel:

Ich einen Anruf an meine-API und es gibt green, jetzt will ich laden Sie meine app mit ich.e (grün Toolbar -, grün - TextView Farbe, etc.), ist das möglich?

Mein Erster Gedanke war:

Erstellen Sie ein Element auf colors.xml genannt demo dann weisen Sie eine Standard-Farbe, dann verwenden Sie diese demo Farbe, wo immer ich will ( Button , TextView usw.) Dann dachte ich, es könnte möglich sein, diesen Wert zu ändern programmgesteuert mit dem Ergebnis von der API, so dass ich nicht brauchen zu erstellen eine SharedPreferences oder sowas und für die Vermeidung von mehr code.

Als @Y. S. sagte zu mir

Leider, haben Sie, um die Farbe von text oder anzeigen manuell überall ... 🙁

Ich möchte, wenn es andere Weg, es zu tun, da ich nicht weiß, wie viele Activities mein Projekt enthalten, so dass, wenn gibt es andere Wege, es zu tun ich bin froh zu hören, andere Vermutungen.

BEARBEITEN

Ich versuche die @Jared Rummler Antwort und vielleicht mache ich etwas falsch... ich habe eine einfache Json und ich legte meine Anlagen, die ich analysieren die Json und ich legte es auf eine GlobalConstant dann machte ich eine "einfache app".

Zuerst habe ich eine TextView und ein Button mit den "your_special_color", und die Rückkehr von es ich die GlobalConstant int wie folgt :

case "your_special_color":                
            return GlobalConstant.color; 

Dann, was ich versucht habe, ist mein Erster Activity hat 1 TextView und 1 Button wie ich schon sagte, bevor, und Sie haben die Farbe "your_special_color", dass ich nicht wollen, es zu ändern, ABER ich habe eine Intent auf meine Button zu öffnen, die anderen Activity enthält das gleiche, aber mit der GlobalConstant.color und es ändert sich nicht.

Ich habe es versucht, dies zu tun (meine zweite Tätigkeit):

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);
}

Hab ich was verpasst?

Oh.. ich dachte, es heraus, dass ich denke, tut dies auf meine MainActivity2 ?

 Button btn = (Button)findViewById(R.id.button2);
 btn.setBackgroundColor(res.getColor(R.color.your_special_color));
hast du den keine Lösung ?
Hey! Hast du endlich dieses Problem beheben? Ich stehe vor einem ähnlichen Problem!
Folgen Sie den Jared Lösung, es funktioniert denke ich mal
Check-out Cyanea dynamisch ändern, primär-und Akzent-Farben: github.com/jaredrummler/Cyanea

InformationsquelleAutor Skizo-ozᴉʞS | 2015-11-29

Schreibe einen Kommentar