Как нарисовать круг в качестве фона в textView вместо квадратного фона? - PullRequest
0 голосов
/ 11 апреля 2019

Я пытаюсь нарисовать круг в качестве фона 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 ]

1 голос
/ 11 апреля 2019

Вы можете изменить его просто так

GradientDrawable bgShape = (GradientDrawable)btn.getBackground();
bgShape.setColor(Color.BLACK);
1 голос
/ 11 апреля 2019

Используя метод setBackgroundColor(), мы меняем цвет фона, но цвет устанавливается на фон textView, по умолчанию для фона любого вида в Android используется прямоугольник.

Чтобы установить конкретную форму фона, мы можем использовать рисование.

В вашем коде вы изменили цвет фона textView с причиной прямоугольной формы textView.

Чтобы изменить цвет фона, вам нужно изменить цвет рисования.

Пожалуйста, попробуйте ниже код, чтобы изменить цвет рисования:

Добавьте этот код к своей деятельности

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);
1 голос
/ 11 апреля 2019
    TextView tv_tag = (TextView)v.findViewById(R.id.tv_tag);
    tv_tag.setText(itemTag);
    tv_tag.setBackground(ContextCompat.getDrawable(getApplicationContext(), R.drawable.circle_drawable));
1 голос
/ 11 апреля 2019

попробуй вот так, надеюсь, это тебе поможет.

GradientDrawable bg = (GradientDrawable)tv_tag.getBackground();
bg.setColor(Color.parseColor("#D81B60"));
1 голос
/ 11 апреля 2019

setBackgroundColor не будет использовать форму для рисования.Он просто установит цвет, а не вашу ожидаемую форму.Поэтому вместо этого используйте setBackground like-

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