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