Как динамически изменить цвет фона TextView?

Я ответил на этот вопрос и реализовал круговой фон для TextView, используя circle.xml (в Res / Drawable) и установка его как android:background="@drawable/circle" для TextView. Но мне нужно установить динамический цвет фона с помощью кода. Так же, как приложение контактов леденец, как показано ниже

введите описание изображения здесь

Как я могу достичь этого? Мне нужен фон TextView в круглой форме всегда, как показано на рисунке выше

3 ответа

Решение

Вы можете изменить цвет фона TextView разными способами, например:

textView.setBackgroundColor(Color.parseColor("#f44336"));

или же

textView.setBackgroundColor(Color.RED);

или же

textView.setBackgroundColor(Color.rgb(255, 0, 0));

или же

textView.setBackgroundColor(getColor(R.color.red_color));

и многое другое...

Редактировать:

Если вы хотите изменить цвет фона TextView, который был определен в вашем нарисованном файле, сделайте это следующим образом:

GradientDrawable:

GradientDrawable tvBackground = (GradientDrawable) textView.getBackground();
tvBackground.setColor(Color.parseColor("#f44336"));

StateListDrawable:

StateListDrawable tvBackground = (StateListDrawable) textView.getBackground();
tvBackground.setColorFilter(Color.parseColor("#f44336"), PorterDuff.Mode.SRC_ATOP);

Но если вы не хотите устанавливать цветной фильтр, вы можете получить рисунок для каждого состояния отдельно, следуя ответу в этой ссылке.

Я думаю, что вы хотели спросить, как создать случайный цвет, чтобы установить в качестве фона для просмотра текста. Ну, есть много способов. например;

textview.setBackgroundColor(Color.rgb((int) (Math.random() * 255), (int) (Math.random() * 255), (int) (Math.random() * 255)));

Мое текстовое представление имеет форму круга, определенную как

// circlehape.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="schemas.android.com/apk/res/android"; android:shape="oval"> 
<solid android:color="@android:color/darker_gray" /> 
<corners android:bottomRightRadius="8dp" android:bottomLeftRadius="8dp" android:topRightRadius="8dp" android:topLeftRadius="8dp"/> 
</shape>

Я применил его к Textview, используя background="@drawable/circleshape"

Это делает текстовое представление круглым. Теперь используйте код ниже, чтобы

GradientDrawable tvBackground = (GradientDrawable) viewHolder.userInitialsText.getBackground();

//myHexColorCode  is like "0xff00ff"
tvBackground.setColor(Color.parseColor(myHexColorCode));
Другие вопросы по тегам