Farbe ändern

  • Antworten:24
Matteo Zmollnig
  • Forum-Beiträge: 51

27.08.2012, 15:55:10 via Website

Hallo!!
Das hört sich jetzt vielleicht nach einem Recht simplen und lächerlichen Problem an, komme aber einfach nicht dahinter.
Hab einfach versucht die Farbe einer textView mit setBackgroundcolor() zu ändern.
Es taucht kein Fehler auf, im LogCat schreibt er auch nix rein aber machen tut er auch nix.
Könnte mir da jemand helfen?
LG

Antworten
Gelöschter Account
  • Forum-Beiträge: 80

27.08.2012, 16:51:08 via Website

Die Farbe des Textes kannst du mit setTextColor() ändern. Meintest du das?

Antworten
Andreas Weichert
  • Forum-Beiträge: 287

28.08.2012, 07:44:47 via Website

Nein er meint die Backgroundcolor:

View V = ........
V.setBackgroundResource(R.drawable.shape_hot);

Nur die Farbe im Code zu setze habe ich nicht hin bekommen.
Mußte vorher Resource für Drawable erzeugen und zuweisen.

Würde mich auch interessieren ob es einfacher geht.

Antworten
Andreas Weichert
  • Forum-Beiträge: 287

28.08.2012, 10:54:05 via Website

Danke Harald für den Tip.

Was ich noch herrausgefunden habe und weshalb ich meinte das es nicht funktioniert die Farbe direkt als value zu setzen.

Wenn man eine Farbe als Resource definiert und den Alphachannel weg läßt wird er automatisch auf FF gesetzt.
Damit funktonierts also. .setBackgroundResource(R.color.expired);

Wenn man dieselbe Value direkt setzt .setBackgroundColor(0xff0000); bleibt natürlich Alphachannel 00 und es klappt nicht.

Antworten
Matteo Zmollnig
  • Forum-Beiträge: 51

28.08.2012, 12:49:14 via Website

DANKE für die Tipps :)

Antworten
asdf j.
  • Forum-Beiträge: 53

28.08.2012, 14:40:13 via Website

um die Farbe von 1 einzelnen item zu ändern braucht man auch die View von diesem item,
aber wie spricht man diese an?
ich glaube mit
1((View) listView1.getItemAtPosition(position)).setBackgroundResource(R.color.red);
wirds nicht funktionieren :D
MfG

— geändert am 28.08.2012, 15:21:57

Antworten
Jan M.
  • Forum-Beiträge: 9

28.08.2012, 15:26:05 via Website

Hallo!

Probiers mal mit:

1... findViewById(R.id.hasteNetGesehen).setBackgroundColor(Color.parseColor("#ffb6c1"));

Gruß

Antworten
asdf j.
  • Forum-Beiträge: 53

28.08.2012, 15:38:10 via Website

Jan M.
Hallo!

Probiers mal mit:

1... findViewById(R.id.hasteNetGesehen).setBackgroundColor(Color.parseColor("#ffb6c1"));

Gruß
für mich wäre genau das wichtig wo du hasteNetGesehn rein geschrieben hast
welche id nehme ich da? ich denke nicht von der listview.. :D
MfG

Antworten
Jan M.
  • Forum-Beiträge: 9

28.08.2012, 16:00:40 via Website

Nun ja, zunächst musst du deiner TextView eine Id zuweisen.
Dazu gehst du in deine layout - Datei ( res -> layout -> "dein_layout".xml )
und definierst dort eine TextView mit einer passenden Id.

Bespiel:
1<TextView
2 android:id="@+id/hier_deine_id"
3 android:layout_width="fill_parent"
4 android:layout_height="wrap_content"
5 android:text="Hallo Farbe!"
6 android:textColor="#000000"
7 android:textSize="10dp" />

Anschließend speicherst du dein layout ab und gehst in deine xyz.java, wo dein layout Verwendung findet.
Dort hast die Möglichkeit deine TextView zu bearbeiten:

Bespiel:
1TextView tv = (TextView) findViewById(R.id.hier_deine_id);
2tv.setBackgroundColor(Color.parseColor("#ffb6c1"));
3tv.setText("Oh, wie ist das schön");

Gruß

Antworten
asdf j.
  • Forum-Beiträge: 53

28.08.2012, 16:11:42 via Website

Jan M.
Nun ja, zunächst musst du deiner TextView eine Id zuweisen.
Dazu gehst du in deine layout - Datei ( res -> layout -> "dein_layout".xml )
und definierst dort eine TextView mit einer passenden Id.

Bespiel:
1<TextView
2 android:id="@+id/hier_deine_id"
3 android:layout_width="fill_parent"
4 android:layout_height="wrap_content"
5 android:text="Hallo Farbe!"
6 android:textColor="#000000"
7 android:textSize="10dp" />

Anschließend speicherst du dein layout ab und gehst in deine xyz.java, wo dein layout Verwendung findet.
Dort hast die Möglichkeit deine TextView zu bearbeiten:

Bespiel:
1TextView tv = (TextView) findViewById(R.id.hier_deine_id);
2tv.setBackgroundColor(Color.parseColor("#ffb6c1"));
3tv.setText("Oh, wie ist das schön");

Gruß
danke für die Antwort
ja das hatte ich schon, nur schaffe ich es nicht die BackgroundColor auf einzelne items einer ListView zu ändern.
(ohne ein onClick() event) :D
das hauptproblem ist, dass ich nicht einfach
1ListView.getItemAtPosition(Position).setBackgroundResource(R.color.red);
schreiben kann
MfG

— geändert am 28.08.2012, 16:14:50

Antworten
Jan M.
  • Forum-Beiträge: 9

28.08.2012, 16:13:14 via Website

Also willst du quasi auf ein Button drücken, der sich dann in deiner ListView ändern soll?

Oder willst du direkt die Farbe ändern, wenn du auf das Item klickst?

— geändert am 28.08.2012, 16:14:42

Antworten
asdf j.
  • Forum-Beiträge: 53

28.08.2012, 16:16:11 via Website

Jan M.
Also willst du quasi auf ein Button drücken, der sich dann in deiner ListView ändern soll?

Oder willst du direkt die Farbe ändern, wenn du auf das Item klickst?
die Items werden ohne einen Button click oder sonstiges automatisch eingefügt und die Farbe sollte vom inhalt abhängig sein
MfG

Antworten
Jan M.
  • Forum-Beiträge: 9

28.08.2012, 16:19:26 via Website

Mal anders gefragt. Was hast du bisher? Dann kann ich dir vll. was zusammen basteln.

Antworten
asdf j.
  • Forum-Beiträge: 53

28.08.2012, 16:38:13 via Website

Jan M.
Mal anders gefragt. Was hast du bisher? Dann kann ich dir vll. was zusammen basteln.
ich habe eine ListView mit einträgen, welche abhängig vom inhalt eine bestimmte hintergrundfarbe setzt.
MfG

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

28.08.2012, 17:58:35 via Website

Wenn du nicht präziser darstellst, was du schon hast, dann kannst du auch keine präzise Antwort erwarten...
Was du realisieren willst, ist im getView() deines ListView Adapters zu erledigen.

Antworten
Matteo Zmollnig
  • Forum-Beiträge: 51

29.08.2012, 08:15:20 via Website

Einfach eine ListView, mit einträgen. ich will für jeden Eintrag eine andere Farbe. Was die einträge betrifft hab ich alles. was die Farbe betrifft nix.

Antworten
Matteo Zmollnig
  • Forum-Beiträge: 51

29.08.2012, 08:20:20 via Website

Meine Frage war zuerst auf Textview ausgerichtet, bei mir jede Zeile aus einem Zweiten Layout eine Textview und eine Checkbox importier. Wenn ich das in meinem adapter einstelle, wird jedoch immer alles nur in der gleichen Farbe dargestellt, weil es sich der einfärbefehl, dann immer auf alle Zeilen bezieht. was mir also fehlt wäre ein Befehl, mit dem ich eine einzige bestimmte Zeile herausnehmen kann und einfärben :)

Antworten
Gelöschter Account
  • Forum-Beiträge: 694

29.08.2012, 08:55:31 via Website

Woran unterscheidest Du die entsprechenden Zeilen? Die Anpassungen machst Du dann bei einfachen Farbänderungen mit einem ViewBinder oder bei komplexen Layout-Differenzen (von Zeile zu Zeile) im eigenen Adapter.

Ein ViewBinder für einen SimpleAdapter geht z.B. so. Die Parameter unterscheiden sich je nach Adaptertyp:

1deinAdapter.setViewBinder(new SimpleAdapter.ViewBinder() {
2
3 @Override
4 public boolean setViewValue(View view, Object data, String string) {
5 int viewId = view.getId();
6
7 if (viewId == dieIdDesEinzufaerbendenTextes) {
8 TextView textView = (TextView) view;
9 // Text einfaerben
10 return true;
11 }
12
13 return false;
14 }
15} );

Matteo Zmollnig

Antworten
Matteo Zmollnig
  • Forum-Beiträge: 51

29.08.2012, 09:34:11 via Website

Wenn du mit Unterscheidung vielleicht eine Zeilen id oder sowas meinst, dann hab ich das nicht. zumindest habe ich nur eine id für den zeileninhalt selbst --- einen wert, der sagt, wie viele zeilen vorhanden sind.
meinst du in deinem Beispiel mit View die ListView oder wie darf ich das verstehen?

Antworten
Matteo Zmollnig
  • Forum-Beiträge: 51

29.08.2012, 11:12:15 via Website

Bei mir Funktioniert die Methode "SetViewBinder" ohnehin nicht, da mein adapter einen eigenen Datentyp, meiner selbsterstellten Klasse hat.... :(

Antworten
Matteo Zmollnig
  • Forum-Beiträge: 51

29.08.2012, 11:14:29 via Website

achso. Da mein adapter einen eigenen Datentyp meiner Klasse hat, mache ich es davon abhängig, wenn ein Eintrag eine gewisse Nummernfolge hat, die beim erstellen des Eintrags festgelegt wird.

Antworten
Matteo Zmollnig
  • Forum-Beiträge: 51

29.08.2012, 11:15:11 via Website

Ich passe.

Schade :((

Antworten