如何制作文本视图形状圆并根据条件设置不同的背景颜色

时间:2012-04-25 13:08:42

标签: android

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

5 个答案:

答案 0 :(得分:47)

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

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

要更改代码的颜色:

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

答案 1 :(得分:23)

要添加到接受的答案,在形状内添加尺寸标签并确保高度和宽度足够大,即使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>

答案 2 :(得分:6)

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

适合我

答案 3 :(得分:0)

将circular_hired.xml文件添加到drawable中,

-print0

但在布局设计xml文件中,您必须修复textview的宽度和高度。它会给出循环形式。

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

我相信它会对你有帮助,

答案 4 :(得分:0)

您也可以通过将颜色设置为可绘制的背景来实现此目的

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