2012-04-25 13 views
20

Tengo TextView, lo que quiero es hacer el círculo de forma TextView y luego establecer el color de fondo diferente según la condición diferente que he utilizado. Puedo establecer el color de fondo basado en condiciones diferentes pero no puedo hacer el círculo de forma TextView. Entonces, cómo se puede hacer eso. Por favor, ayúdame a resolver esto.Cómo hacer círculo de forma de vista de texto y establecer diferente color de fondo según la condición

Código he utilizado es

 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

Lo que hacer significa por "Hacer un círculo de forma de vista de texto"? ¿Desea poder hacer algo como esto http://johnfenzel.typepad.com/john_fenzels_blog/images/2007/04/07/gilgaf108_2.gif? o algo mas ? – XGouchet

+0

Aquí está la solución de tu pregunta: [Aquí] [1] [1]: http://stackoverflow.com/questions/10150642/draw-text-in-circular-view/10150970#10150970 –

+0

Quiero decir, quiero textView look oval y al mismo tiempo quiero establecer el color de fondo de textView basado en la condición que ya tengo en mi código. – AndroidDev

Respuesta

43

Si usted tiene una relativamente pequeña cantidad que de colores, puede crear un archivo estirable para cada color, por ejemplo, crear un archivo de 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> 

A continuación, asigne definir el 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" 
    /> 

Tenga en cuenta que el ancho es dos veces el radio del radio de la esquina de fondo.

Para cambiar el color de código:

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

¡Esto funcionó! Gracias – speedynomads

+7

realmente necesitaba eliminar el artículo porque no era válido y cambié a: ' ' PD: si configura el fondo como recurso o color y luego desea establecer la forma, no funcionará. No debe establecer ningún fondo si desea usar la forma. color en forma de archivo xml en su lugar! – deadfish

+0

Pero ¿qué hay de mi texto es más largo de un personaje? Se escalará a ovalado :( – Justin

18

Para sumar a la respuesta aceptada, la adición de etiquetas de tamaño dentro de forma y asegurándose de que la altura y la anchura es suficientemente grande se asegurará de que el fondo es círculo incluso si Textview tiene muchos personajes!

<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

Añadir archivo circular_hired.xml en su estirable,

<?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> 

pero en que el archivo XML de diseño diseño, hay que fijar la anchura y la altura de Vista de Texto. dará la forma circular.

<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" 
      /> 

i seguro de que te ayudaré,

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

funciona para mí

+1

Añadir una explicación con la respuesta de cómo esta respuesta ayuda OP en la fijación de edición actual –

0

También puede lograr esto mediante el establecimiento de color al fondo estirable como esto

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