2009-09-23 28 views
143

L'impostazione del colore di sfondo di un TextView Android non sembra funzionare. Mi manca qualcosa!Android TextView: l'impostazione dinamica del colore di sfondo non funziona

TextView et = new TextView(activity); 
et.setText("350"); 
et.setBackgroundColor(R.color.white); 

devo anche questo file (colors.xml) nei miei res/valori cartella

<resources> 
     <color name="white">#ffffffff</color> 
     <color name="black">#ff000000</color> 
</resources> 

[EDIT]: Inoltre, l'impostazione del colore del testo fa sì che il TextView a scomparire.

TextView c1 = new TextView(activity); 
c1.setTextColor(R.color.solid_red); 
c1.setText("My Text"); 

risposta

278

Usa et.setBackgroundResource (R.color.white);

+5

L'API Android è davvero qualcosa, perché non è stato possibile lanciare un errore? – Tawani

+49

Perché non è un errore. setBackgroundColor() prende un colore in forma numerica (ad es. 0xFFFF0000 per il rosso). R.color.white è anche un numero. – CommonsWare

+5

D'oh! Questo sicuramente avrebbe potuto essere fatto meglio con enumerazioni piuttosto che onnipresenti. Grazie per la risposta. –

69

Prova questo:

TextView c1 = new TextView(activity); 
c1.setTextColor(getResources().getColor(R.color.solid_red)); 
c1.setText("My Text"); 

Sono d'accordo che un colore e una risorsa hanno lo stesso tipo, ma anche trascorrere qualche ora di trovare questa soluzione.

+1

Non lo capisco completamente adesso (guardando oltre api doc) ma funziona, quindi grazie! –

+0

Grazie, mi hai salvato qualche ora! Ora che conosco la soluzione, ha senso per me, ma sono sicuro che mi ci sarebbero volute alcune ore per capirlo da solo. – FreewheelNat

+0

Grazie. L'API Android è davvero non intuitiva a volte. –

-9

è possibile utilizzare android:textColor= " qualunque sia il colore del testo u vuole dare" nel file XML in cui viene dichiarata la visualizzazione del testo

+2

Colore di sfondo ... –

52

Per impostare il colore rosso:.

textView.setBackgroundColor(0xfff00000); 

O

<color name="solid_red">#fff00000</color> 

textView.setBackgroundResource(R.color.solid_red); 
+0

bella risposta ... Voterò questo domani .. – Aravindhan

+1

Per echo la risposta di badMonkey dato che questa è la risposta più popolare, è necessario impostare i bit di ordine superiore su zero per la trasparenza. Vengo catturato tutto il tempo specificando l'RGB senza la A.Per impostare lo sfondo in blu puro, utilizzare 0xff0000ff, non 0x0000ff o non funzionerà. – JohnnyLambada

+0

Nel file .xml il valore di un elemento funziona solo con le classiche 6 cifre: # FF0000 –

16

Ho avuto un problema simile in cui stavo creando un colore numerico senza considerare il canale alfa principale, ad esempio mytext.setTextColor(0xFF0000) (pensando che questo sarebbe stato rosso). Anche il colore è trasparente al 100% come it = 0x00FF0000; Il valore opaco corretto al 100% è 0xFFFF0000 o mytext.setTextcolor(0xFFFF0000).

+0

Ah, ecco perché i miei colori si sono rivelati sbagliati! – marlar

1

Jut utilizzare

ArrayAdapter<String> adaptername = new ArrayAdapter<String>(this, 
      android.R.layout.simple_dropdown_item_1line, your array list); 
7

Beh ho avuto situazione in cui il servizio Web ha restituito un colore in formato esadecimale come "# CC2233" e ho voluto mettere questo colore su textView utilizzando setBackGroundColor(), così ho utilizzato Android Classe di colore per ottenere il valore int della stringa esadecimale e passarla alla funzione menzionata. Tutto ha funzionato. Questo è un esempio:

String myHexColor = "#CC2233"; 
TextView myView = (TextView) findViewById(R.id.myTextView); 
myView.setBackGroundColor(Color.pasrsehexString(myHexColor)); 

P.S. ha postato questa risposta perché altre soluzioni non hanno funzionato per me. Spero che questo possa aiutare qualcuno :)

2

Color.parseHexColor("17ee27") non ha funzionato per me, invece Color.parseColor("17ee27") ha funzionato perfettamente.

0

due modi per farlo: il colore

1.Creare nel file di colors.xml come:

<resources> 
     <color name="white">#ffffff</color> 
</resources> 

e usarlo int attività di classe Java come:

et.setBackgroundResource(R.color.white); 

2.

et.setBackgroundColor(getResources().getColor(R.color.white)); 
       or 
et.setBackgroundColor(Color.parseColor("#ffffff")); 
3
tv.setTextColor(getResources().getColor(R.color.solid_red)); 
7

Proprio questa 1 riga di codice cambiato lo sfondo di programmazione

tv.setBackgroundColor(Color.parseColor("#808080")); 
+1

Grazie amico. Mi ha davvero aiutato –

1

Questi sono i passi da fare in modo corretto:

  1. Prima di tutto, dichiarare un'istanza di TextView nel MainActivity.java come segue:

    TextView mTextView; 
    
  2. Set qualche testo in modo dinamico (se volete) come segue:

    mTextView.setText("some_text"); 
    
  3. Ora, per impostare il colore di sfondo, è necessario definire il proprio colore con i colori RES-> VALORI> file XML come segue:

    <resources> 
        <color name="my_color">#000000</color> 
    </resources> 
    
  4. È ora possibile utilizzare il colore "my_color" nel file java per impostare lo sfondo in modo dinamico nel modo seguente:

    mTextView.setBackgroundResource(R.color.my_color); 
    
1

Se si desidera supportare tutte le versioni, fare questo:

myTextView.setBackgroundColor (ContextCompat.getColor (questo, R.color.mycolor));

2

qui è nel piccolo dettaglio,

se si è in uso attività di questo

textview.setBackground(ContextCompat.getColor(this,R.color.yourcolor)); 

se si è in uso frammento seguito di codice

textview.setBackground(ContextCompat.getColor(getActivity(),R.color.yourcolor)); 

se si è in uso l'adattatore recyclerview Sotto il codice

textview.setBackground(ContextCompat.getColor(context,R.color.yourcolor)); 

// use holder.textview if you are in onBindviewholder 
//here context is passed from fragment 
Problemi correlati