这是我在layout.xml中的文本视图
<TextView
android:id="@+id/tvCharacter"
android:layout_width="0dp"
android:layout_height="@dimen/_43sdp"
android:layout_gravity="center"
android:layout_weight="1.8"
android:paddingBottom="@dimen/_1sdp"
android:paddingTop="@dimen/_1sdp"
android:background="@drawable/rounded_textview"
android:text="H"
android:gravity="center"
android:textSize="@dimen/_28ssp"
android:textColor="#fff"
android:visibility="gone"
/>
这是背景,用于文本视图以实现圆形
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/circle" />
这是circle.xml文件,这是我要更改的textView的背景颜色
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#9FE554" />
<stroke
android:width="0dp"
android:color="#000" />
答案 0 :(得分:0)
您可以获取可绘制对象,然后使用setColorFilter
方法更改其颜色,最后为TextView设置新背景:
Drawable drawable = itemView.getContext().getDrawable(R.drawable.circle);
drawable.setColorFilter(ContextCompat.getColor(itemView.getContext(), R.color.colorPrimary),
PorterDuff.Mode.SRC_ATOP);
tvCharacter.setBackground(drawable);
在这种情况下,我认为您不需要@ drawable / rounded_textview。我将TextView背景设置为@ drawable / circle。
注意:我使用itemView.getContext()
是因为我是在ViewHolder的构造函数中实现的。
答案 1 :(得分:0)
我通过使用以下代码来做到这一点,并一直使用随机颜色
Random r = new Random();
int red=r.nextInt(255 - 0 + 1)+0;
int green=r.nextInt(255 - 0 + 1)+0;
int blue=r.nextInt(255 - 0 + 1)+0;
int alpha = 200;
GradientDrawable draw = new GradientDrawable();
draw.setShape(GradientDrawable.OVAL);
draw.setColor(Color.argb(alpha,red,green,blue));
viewHolder.tvCharacter.setBackground(draw);