2012-04-25 19 views
20

Ho un TextView, quello che voglio è quello di creare il cerchio di forma TextView e quindi impostare il diverso colore di sfondo in base alle diverse condizioni che ho usato. Sono in grado di impostare il colore di sfondo in base a condizioni diverse ma non in grado di creare il cerchio di forma TextView. Quindi, come può essere fatto. Per favore aiutami a risolvere questo problema.Come rendere il cerchio forma del testo Visualizza e impostare il colore dello sfondo diverso in base alle condizioni

codice che ho utilizzato è

 TextView txt_stage_display = (TextView)findViewById(R.id.txt_stage_display); 

     if(m_enStage[position] == enSTAGE_START) 
     { 
      txt_stage_display.setBackgroundColor(Color.parseColor("#D48393"));    
     } 

     else if(m_enStage[position] == enSTAGE_FLOW) 
     { 

      txt_stage_display.setBackgroundColor(Color.parseColor("#D48393"));    
     } 
     else if(m_enStage[position] == enSTAGE_SAFE) 
     { 

      txt_stage_display.setBackgroundColor(Color.parseColor("#66B0CC"));    
     } 
     else if(m_enStage[position] == enSTAGE_UNSAFE) 
     { 
      txt_stage_display.setBackgroundColor(Color.parseColor("#D8C627"));    
     } 
     else if(m_enStage[position] == enSTAGE_FERTILE) 
     { 
      txt_stage_display.setBackgroundColor(Color.parseColor("#67A05E"));         
     } 
     else 
     { 

      txt_stage_display.setBackgroundColor(Color.parseColor("#808080"));    
     } 
+0

quello che fai significa "Crea un cerchio di forma di visualizzazione del testo"? Vuoi essere in grado di fare qualcosa di simile a questo http://johnfenzel.typepad.com/john_fenzels_blog/images/2007/04/07/gilgaf108_2.gif? o qualcos'altro ? – XGouchet

+0

Ecco la soluzione per la tua domanda: [qui] [1] [1]: http://stackoverflow.com/questions/10150642/draw-text-in-circular-view/10150970#10150970 –

+0

Intendo dire, voglio che textView abbia un aspetto ovale e allo stesso tempo desideri impostare il colore di sfondo del textView in base alle condizioni che ho nel mio codice. – AndroidDev

risposta

43

Se si dispone di un relativamente piccolo amout di colori, è possibile creare un file drawable per ogni colore, per esempio creare un file bg_red.xml:

<?xml version="1.0" encoding="utf-8"?> 
<item xmlns:android="http://schemas.android.com/apk/res/android"> 
    <shape> 
     <solid android:color="#f00" /> 
     <corners 
      android:topLeftRadius="30dp" 
      android:topRightRadius="30dp" 
      android:bottomLeftRadius="30dp" 
      android:bottomRightRadius="30dp" 
      /> 
    </shape> 
</item> 

Quindi assegnare definire TextView:

<TextView 
    android:id="@+id/tv" 
    android:layout_height="60dp" 
    android:layout_width="60dp" 
    android:text="X" 
    android:textColor="#fff" 
    android:textSize="20sp" 
    android:background="@drawable/bg_red" 
    android:gravity="center_vertical|center_horizontal" 
    /> 

Notare che la larghezza è il doppio del raggio del raggio dell'angolo dello sfondo.

Per cambiare il colore dal codice:

TextView v = (TextView) findViewById(R.id.my_text_view); 
v.setBackgroundResource(R.drawable.bg_blue); 
+0

Questo ha fatto il trucco! Grazie – speedynomads

+7

in realtà avevo bisogno di rimuovere l'elemento perché non era valido e ho cambiato: ' ' PS! Se hai impostato lo sfondo su risorsa o colore e poi vuoi impostare la forma, non funzionerà. Non devi impostare nessuno sfondo Se vuoi usare la forma. invece il file xml di colore in forma! – deadfish

+0

Ma che dire del mio testo è più lungo di un carattere? Scala in ovale :( – Justin

18

Per aggiungere fino alla risposta accettata, l'aggiunta di tag dimensioni all'interno forma e fare in modo altezza e larghezza è abbastanza grande farà in modo che lo sfondo è cerchio, anche se textView ha molti personaggi!

<shape> 
<solid android:color="#f00" /> 
<corners 
    android:topLeftRadius="30dp" 
    android:topRightRadius="30dp" 
    android:bottomLeftRadius="30dp" 
    android:bottomRightRadius="30dp" 
    /> 
<size 
    android:height="25dp" 
    android:width="25dp"/> 
</shape> 
0

Aggiungere file di circular_hired.xml nella vostra disegnabile,

<?xml version="1.0" encoding="utf-8"?> 
    <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" > 


      <solid android:color="@color/map_hide_bg"/> 
      <stroke android:width="1dip" android:color="@color/map_hide_bg" /> 

    </shape> 

ma in voi layout di file di progettazione XML, è necessario fissare la larghezza e l'altezza di TextView. darà la forma circolare.

<TextView 
      android:id="@+id/tvMessages" 
      android:layout_width="20dp" 
      android:layout_height="20dp" 
      android:layout_alignParentRight="true" 
      android:layout_centerVertical="true" 
      android:gravity="center" 
      android:background="@drawable/circular_message" 
      android:padding="4dp" 
      android:text="5" 
      android:textColor="@color/white_color" 
      android:textSize="@dimen/txt12" 
      android:visibility="visible" 
      /> 

Sono sicuro che vi aiuterà,

3
TextView textView = (TextView) findViewById(R.id.my_text_view);    
Drawable drawable = textView.getBackground(); 
drawable.setColorFilter(getResources().getColor(color), PorterDuff.Mode.SRC_IN); 

funziona per me

+1

Aggiungi qualche spiegazione con la risposta di come questa risposta di aiuto nel fissare OP questione attuale –

0

È inoltre possibile raggiungere questo impostando il colore di sfondo drawable come questo

TextView textView = (TextView) findViewById(R.id.my_text_view); 
((GradientDrawable)textView.getBackground()).setColor(R.color.my_color); 
Problemi correlati