如何使文本视graphics状圈,并根据条件设置不同的背景色

我有一个TextView ,我想要的是使TextView形状的圆形,然后设置不同的背景颜色基于我已经使用的不同的条件。 我能够根据不同的条件设置背景色,但不能使TextView形状成为圆形。 那么如何做到这一点。 请帮我解决这个问题。

我使用的代码是

  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")); } 

Solutions Collecting From Web of "如何使文本视graphics状圈,并根据条件设置不同的背景色"

如果颜色相对较less,则可以为每种颜色创build一个可绘制文件,例如,创build一个文件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> 

然后分配定义的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" /> 

请注意,宽度是背景圆angular半径的两倍。

从代码更改颜色:

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

为了join公认的答案,在形状中添加大小标签并确保高度和宽度足够大,即使textView有很多字符,也可以确保背景是圆形的!

 <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> 
 TextView textView = (TextView) findViewById(R.id.my_text_view); Drawable drawable = textView.getBackground(); drawable.setColorFilter(getResources().getColor(color), PorterDuff.Mode.SRC_IN); 

为我工作

将circular_hired.xml文件添加到绘图中,

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

但在你的布局deviseXML文件,你必须修复textview的宽度和高度。 它会给出通告的forms。

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

我确定它会帮助你,