如何将一个圆形绘制为textView中的背景而不是方形背景?

时间:2019-04-11 03:59:36

标签: android background textview

我试图动态地绘制一个圆形作为textView的背景,但取而代之的是绘制整个方形背景

我尝试了一种有效的静态方式: 这是我的代码

circle_drawable.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval" >
    <corners android:radius="4dip" />
    <stroke
        android:width="5dip"
        android:color="@color/colorPrimary" />
    <solid android:color="@color/colorPrimary" />

</shape>


list_item.xml

    <TextView
        android:id="@+id/tv_tag"
        android:layout_width="50dp"
        android:layout_height="54dp"
        android:layout_marginStart="10dp"
        android:layout_marginLeft="25dp"
        android:layout_marginTop="4dp"
        android:layout_marginBottom="4dp"
        android:background="@drawable/circle_drawable"
        android:gravity="center"
        android:text="B"
        android:textColor="#fff"
        android:textSize="30dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.454" />

它静态地用于:

 TextView tv_tag = (TextView)v.findViewById(R.id.tv_tag);
 tv_tag.setText(itemTag); 

circle

但是当我尝试使用setBackgroundColor更改背景颜色时

 TextView tv_tag = (TextView)v.findViewById(R.id.tv_tag);
 tv_tag.setText(itemTag);
 tv_tag.setBackgroundColor(Color.parseColor("#D81B60"));

square

任何帮助对我来说都是很棒的。

5 个答案:

答案 0 :(得分:1)

setBackgroundColor将不使用可绘制形状。它只会设置颜色,而不是您期望的形状。因此,使用setBackground like-

tv_tag.setBackground(ContextCompat.getDrawable(context,R.drawable.circlw_drawable))

答案 1 :(得分:1)

    TextView tv_tag = (TextView)v.findViewById(R.id.tv_tag);
    tv_tag.setText(itemTag);
    tv_tag.setBackground(ContextCompat.getDrawable(getApplicationContext(), R.drawable.circle_drawable));

答案 2 :(得分:1)

尝试这样,希望对您有所帮助。

GradientDrawable bg = (GradientDrawable)tv_tag.getBackground();
bg.setColor(Color.parseColor("#D81B60"));

答案 3 :(得分:1)

使用setBackgroundColor()方法,我们更改了背景颜色,但将颜色设置为textView的背景,默认情况下,Android中任何视图的背景形状都是矩形。

要设置特定的背景形状,我们可以使用drawable。

在您的代码中,由于textview的矩形形状,更改了textView的背景颜色。

要更改背景颜色,您需要更改drawable的颜色。

请尝试以下代码更改可绘制对象的颜色:

将此代码添加到您的活动中

TextView tv_tag=findViewById(R.id.tv_tag);
Drawable mDrawable = getResources().getDrawable(R.drawable.circle_drawable);
mDrawable.setColorFilter(new PorterDuffColorFilter(Color.RED,  PorterDuff.Mode.SCREEN));
tv_tag.setBackground(mDrawable);

答案 4 :(得分:1)

您可以像这样简单地对其进行修改

GradientDrawable bgShape = (GradientDrawable)btn.getBackground();
bgShape.setColor(Color.BLACK);