3

我已经引用了这个问题circle.xml,并使用 (在 res/drawable 中)为 TextView 实现了圆形背景,并将其设置android:background="@drawable/circle"为 TextView。但我需要的是,我需要通过代码动态设置背景颜色。就像棒棒糖联系人应用程序一样,如下所示

在此处输入图像描述

我怎样才能做到这一点?我需要圆形的 TextView 背景总是如上图所示

4

3 回答 3

9

您可以通过多种方式更改 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 tvBackground = (GradientDrawable) textView.getBackground();
tvBackground.setColor(Color.parseColor("#f44336"));

状态列表可绘制:

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

但是如果您不想设置颜色过滤器,您可以按照此链接中的答案分别获取每个状态的drawable 。

于 2015-09-20T13:23:07.627 回答
2

我想您想问如何生成随机颜色以设置为您的 textview 背景。嗯,有很多方法。例如;

textview.setBackgroundColor(Color.rgb((int) (Math.random() * 255), (int) (Math.random() * 255), (int) (Math.random() * 255)));
于 2015-09-20T13:41:24.970 回答
1

我的文本视图有一个圆形定义为

//圆形.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"

这使得 textview 循环。现在使用下面的代码

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

//myHexColorCode  is like "0xff00ff"
tvBackground.setColor(Color.parseColor(myHexColorCode));
于 2016-09-17T20:10:01.403 回答