it-swarm.com.de

TextView setTextColor () funktioniert nicht

Ich programmiere eine Liste solcher Elemente programmgesteuert (keine ListView, sondern nur zum übergeordneten Element hinzufügen):

    <LinearLayout Android:layout_width="wrap_content" Android:layout_height="wrap_content" 
    Android:orientation="vertical" Android:layout_weight="1">
    <TextView Android:id="@+id/filiale_name"
    Android:layout_width="fill_parent" Android:layout_height="wrap_content"/>
    <TextView Android:id="@+id/lagerstand_text"
    Android:layout_width="fill_parent" Android:layout_height="wrap_content"
    Android:textSize="10sp" Android:textColor="@color/red"/>
</LinearLayout>

Ich habe auch einige Farben in values ​​/ colors.xml definiert. Wie Sie sehen, hat die TextView mit der ID "lagerstand_text" standardmäßig eine rote Farbe. Das funktioniert.

Beim Erstellen der Elemente in Java mache ich das

lagerstandText.setText("bla");

und für einige Elemente mache ich auch

lagerstandText.setTextColor(R.color.red);

und andere Farben. Während die Elemente, auf denen ich setTextColor () nicht aufrufe, rot sind, sind alle anderen grau, egal welche Farbe ich gewählt habe (auch wenn es wieder dasselbe Rot ist).

Warum das?

63
didi_X8

Die Dokumentation ist darüber nicht sehr ausführlich, aber Sie können beim Aufruf von setTextColor nicht nur die Ganzzahl R.color verwenden. Sie müssen getResources().getColor(R.color.YOURCOLOR) aufrufen, um eine Farbe richtig einzustellen.

Verwenden Sie das Folgende, um die Farbe Ihres Texts programmgesteuert festzulegen:

textView.setTextColor(getResources().getColor(R.color.YOURCOLOR));

Beginnend mit der Support-Bibliothek 23 müssen Sie den folgenden Code verwenden, da getColor veraltet ist:

textView.setTextColor(ContextCompat.getColor(context, R.color.YOURCOLOR));
199

Es gibt also viele Möglichkeiten, diese Aufgabe zu lösen.

1.

int color = Integer.parseInt("bdbdbd", 16)+0xFF000000;
textview.setTextColor(color);

2.

textView.setTextColor(getResources().getColor(R.color.some_color));

3.

textView.setTextColor(0xffbdbdbd);

4.

textView.setTextColor(Color.parseColor("#bdbdbd"));

5.

textView.setTextColor(Color.argb(a_int, r_int, g_int, b_int));
31
duggu

1.standardfarbe u bevorzugen Sie bitte unten gehen.

textview.setTextColor(Color.select_color)

2. möchten custwom color verwenden, fügen Sie es in der Datei color.xml hinzu

textview.setTextColor(getResources().getColor(R.color.textbody));

oder

textView.setTextColor(Color.parseColor("#000000"));

oder

subText.setTextColor(Color.rgb(255,192,0));
1
sneha v

Für die zukünftige Verwendung können Sie Folgendes verwenden:

String color = getString(Integer.parseInt(String.valueOf(R.color.my_color)));
my_textView.setTextColor(Color.parseColor(color));

Auf diese Weise können Sie Ihre Farbressourcen nutzen.

1
Chad Mx

Die in R-Klasse definierte Ganzzahl-ID für eine bestimmte Farbe (definiert im XML-Layout) kann nicht als Parameter an die setTextColor()-Methode der View-Klasse ..__ übergeben werden. Sie müssen den Parameter der setTextColor() von erhalten die folgende Codezeile: 

int para=getResources().getColor(R.color.your_color,null);
view.setTextColor(para,null);

Die Methode getColor(int id) wurde abgeschrieben ... Verwenden Sie stattdessen getColor(int id,Resources.Theme theme) wie in der obigen Codezeile.

The `second parameter( theme )` can be null
0
Abhi