Kann mann android:textColor mit flag ändern?

  • Antworten:5
  • Bentwortet
Urs R.
  • Forum-Beiträge: 38

28.05.2017, 06:36:01 via Website

Hallo zusammen

Kurz erklärt:
Ich erfasse mit einer App Daten, die ich mit einem onClick auf ein Button-Array-Element, einer bestimmten Gruppe zuordnen kann. Wähle ich versehentlich eine falsche Gruppe oder sehe, dass ich bei der Datenerfassung einen falschen Wert eingegeben habe, steht ein Button 'Undo' zur Verfügung. Damit kann ich die letzte Eingabe bzw. Zuordnung rückgängig machen und den Fehler korrigieren. Für 'Undo' benutze ich ein undoFlag (true oder false). Dieses Flag wird auf 'true' gesetzt, wenn ich die Taste 'Undo' drücke und bleibt gesetzt, bis ich wieder Daten einer Gruppe zuordne.

Wie ich den Button in einer @drawable/button.xml mit verschiedene Optionen ändern kann, ist mir bekannt. Was ich aber erreichen möchte ist das Ändern der Button-Text-Farbe, solange das Flag gesetzt ist. Sinnbildlich mit folgender Anweisung
...
public void onKeyUndo(View view) {
undoFlag = true;
keyUndo:textColor = "red";
}
...
public void onButtonArrayXY(View view) {
datensatzXY = DatenXY;
if (undoFlag) {
undoFlag = false;
keyUndo:textColor = "white";
}

Gibt es eine Möglichkeit meine Vorstellung irgendwie mit wenig Aufwand umzusetzen?
...oder bin ich der Einzige, der auf solche 'dummen' Ideen kommt... :D

Es geht hier rein um Kosmetik ohne weiteren Einfluss auf die App. Ich mag es aber, wenn eine App mit kosmetischen Feinheiten gespickt ist. Zu diesr Option habe ich leider ergebnislos gegoogelt.

Antworten
swa00
  • Forum-Beiträge: 3.704

28.05.2017, 07:11:38 via Website

Guten Morgen Urs,

textview.setColor (0xFFFFFFFF);
textview.setBackgroundColor ( 0xFFFF0000);

Bei solchen DIngen immer zuerst in der offiziellen Dokumentation nachschauen,
bevor man aufwendig googelt

https://developer.android.com/reference/android/widget/TextView.html

— geändert am 28.05.2017, 08:26:34

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten
Urs R.
  • Forum-Beiträge: 38

28.05.2017, 09:21:12 via Website

hast du mein code-beispiel mal genau angeschaut?

wie übergebe ich die textfarbe einem bestimmten textview, abhängig von einem gesetzten oder nicht gesetzten flag, irgendwo an einer beliebigen position im programm-code?

wie man das in der .xml macht weiss ich doch. wie ich das aber in einer .java machen muss, hab ich nicht herausgefunden, wenn das überhaupt möglich ist. ich muss ja dem textview.setColor auch noch beibringen können, auf welches der 25 textview sich das bezieht. darüber steht bei android.com nichts, was für mich brauchbar klingt und mir weiterhilft. so auch deine beiden beispiele. wie bekomme ich den bezug zu meinem onUndo-textview?

Antworten
swa00
  • Forum-Beiträge: 3.704

28.05.2017, 09:56:24 via Website

Hallo Urs ,
bei aller Liebe :

Natürlich habe ich deinen Post durchgelesen und natürlich habe ich mir was dabei gedacht , als
ich Dir die Antwort verfasst habe.

Bevor du mich also "Korrigierst" wäre ich Dir sehr dankbar , nochmal deinen Post zu lesen :-)

Du fragst eindeutig :

"Wie kann ich die Textfarbe eines Buttons abhängig von einem Fall programmtechnisch im Quellcode ändern ?"

Dein Titel :

Kann mann android:textColor mit flag ändern?

Zitat Deinerseits 1:

Wie ich den Button in einer @drawable/button.xml mit verschiedene Optionen ändern kann, ist mir bekannt. Was ich aber erreichen möchte ist das Ändern der Button-Text-Farbe, solange das Flag gesetzt ist. Sinnbildlich mit folgender Anweisung

Zitat Deinerseits 2:

wie man das in der .xml macht weiss ich doch. wie ich das aber in einer .java machen muss, hab ich nicht
herausgefunden,

Und eine treffende Antwort hast du von mir oben erhalten .

Ob du setColor, setBackgroundColor, setBackgroundDrawable etc oder was auch immer auf ein View
anwendest, überlasse ich dir.
Ich habe dir lediglich anhand eines einfachen Beispieles behilflich sein wollen.

Siehe auch die Vererbung

java.lang.Object
↳ android.view.View
↳ android.widget.TextView
↳ android.widget.Button

Die Instanzen deiner Layoutelemente nimmst du ganz normal wie immer vor.
Die hast du ja bereits ermittelt, - in dem Moment , wo du den Listener setzt.

Oder wolltest Du schlichtweg fragen :
"Wie bekomme ich den entsprechenden Layout-Handle eines View-Elementes während der Laufzeit ?"

— geändert am 28.05.2017, 10:22:41

Liebe Grüße - Stefan
[ App - Entwicklung ]

Pascal P.

Antworten
Urs R.
  • Forum-Beiträge: 38

28.05.2017, 10:42:49 via Website

Sorry, mein Fehler. Habe einfach das 0x bei ( 0xFFFF0000) nicht realisiert.
Allerdings ist AndroidStudio in dieser Beziehung auch keine grosse Hilfe gewesen.
Die Versuche die Farbe mit (R.color.red), (#FF0000), oder (@color/red) zuzuweisen, hat etliche Vorschläge hervorgebracht, was man da noch ändern könnte oder müsste. Nur hat von den unzähligen Anweisungen keine zum Erfolg geführt. Vielleicht war ich darum ein bisschen Blind, was dein Hinweis betroffen hat.

Ich bitte also nochmal um Entschuldigung und danke für deinen Input. Problem gelöst. :)

Antworten
swa00
  • Forum-Beiträge: 3.704

28.05.2017, 13:42:35 via Website

Hallo Urs,
keine Ursache , ich wehre mich ja schon :-)

Zur Erklärung : Bei den Funktionen musst du numerisch angeben.
Im obigen Beispiel hexadezimal im ARGB format (0x AA RR GG BB)

Color.RED ist praktisch auch numerisch (0xFFFF0000)

— geändert am 28.05.2017, 13:51:20

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten