如何动态改变TextView的背景颜色?
How to change TextView's background color dynamically?
我已经引用 this question 并使用 circle.xml
(在 res/drawable 中)为 TextView 实现了圆形背景,并将其设置为 TextView 的 android:background="@drawable/circle"
。但是我需要的是,我需要通过代码动态设置背景颜色。就像下图的棒棒糖联系人应用
我怎样才能做到这一点?我总是需要圆形的 TextView 背景,如上图所示
您可以通过多种方式更改 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);
但是如果你不想设置颜色过滤器,你可以按照这个link中的答案分别获取每个状态的drawable。
我想你想问的是如何生成随机颜色以设置为文本视图背景。好吧,有很多方法。例如;
textview.setBackgroundColor(Color.rgb((int) (Math.random() * 255), (int) (Math.random() * 255), (int) (Math.random() * 255)));
我的文本视图有一个定义为
的圆形
// circleshape.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>
我使用 background="@drawable/circleshape"
将其应用于 Textview
这使得文本视图循环。现在使用下面的代码
GradientDrawable tvBackground = (GradientDrawable) viewHolder.userInitialsText.getBackground();
//myHexColorCode is like "0xff00ff"
tvBackground.setColor(Color.parseColor(myHexColorCode));
我已经引用 this question 并使用 circle.xml
(在 res/drawable 中)为 TextView 实现了圆形背景,并将其设置为 TextView 的 android:background="@drawable/circle"
。但是我需要的是,我需要通过代码动态设置背景颜色。就像下图的棒棒糖联系人应用
我怎样才能做到这一点?我总是需要圆形的 TextView 背景,如上图所示
您可以通过多种方式更改 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);
但是如果你不想设置颜色过滤器,你可以按照这个link中的答案分别获取每个状态的drawable。
我想你想问的是如何生成随机颜色以设置为文本视图背景。好吧,有很多方法。例如;
textview.setBackgroundColor(Color.rgb((int) (Math.random() * 255), (int) (Math.random() * 255), (int) (Math.random() * 255)));
我的文本视图有一个定义为
的圆形// circleshape.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>
我使用 background="@drawable/circleshape"
这使得文本视图循环。现在使用下面的代码
GradientDrawable tvBackground = (GradientDrawable) viewHolder.userInitialsText.getBackground();
//myHexColorCode is like "0xff00ff"
tvBackground.setColor(Color.parseColor(myHexColorCode));