如何在不更改recyclerView主体的情况下更改View Drawable的背景颜色?

费尔南多·阿玛拉尔

我有一个带有主体和颜色的标准可绘制对象。但是我recyclerView每次调用该方法时都无法在我的Bind过程中更改此可绘制对象的颜色,holder.item.setBackgroundColor ();或者setBackground它甚至根据需要更改了颜色,但是最终完全改变了我最初的可绘制对象的形状。

我的形状Drawble:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <solid android:color="@android:color/holo_orange_dark" />
    <size
        android:width="120dp"
        android:height="120dp"
        />
</shape>

实现形状的视图

<?xml version="1.0" encoding="utf-8"?>

<View
    android:id="@+id/item_cores"
    android:layout_width="30dp"
    android:layout_height="30dp"
    android:background="@drawable/cores_drawable"
    android:layout_margin="10dp"
    android:backgroundTint="@color/black"
    xmlns:android="http://schemas.android.com/apk/res/android" />

班级持有人

class coresHolder extends RecyclerView.ViewHolder {
        cores colors;
        View item;

        public coresHolder(View itemView) {
            super(itemView);
            itemClick(itemView);
            item= itemView.findViewById(R.id.item_cores);

        }

        private void itemClick(View itemView) {
            itemView.setOnClickListener(v -> {
                onClickListernet.onItemClick(colors);
            });
        }

        public void vincule(cores colors) {
            this.colors =colors;
            
        }


    }
// bind
    @Override
    public void onBindViewHolder(coresHolder holder, int position) {
        cores cores=list.get(position);
        holder.vincule(cores);
      //ps only a test change color to holder
        holder.item.setBackgroundColor(R.color.purple_700);

我需要的:

在此处输入图片说明

我得到了:

在此处输入图片说明

Zain

在适配器中添加以下实用程序方法

public static void setDrawableColor(Context context, Drawable drawable, int color) {
    Drawable drawableWrap = DrawableCompat.wrap(drawable).mutate();
    DrawableCompat.setTint(drawableWrap, ContextCompat.getColor(context, color));
}

并按如下方式使用它 onBindViewHolder

@Override
public void onBindViewHolder(coresHolder holder, int position) {
    cores cores=list.get(position);
    holder.vincule(cores);
   
    // Changing background drawable
    setDrawableColor(holder.item.getContext(), holder.item.getBackground(), R.color.purple_700);
    
}

演示:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在不更改javafx边框的情况下更改TextField的背景颜色?

如何在不更改框阴影颜色的情况下更改 svg 颜色

如何在不更改背景内容的情况下更改背景的不透明度?

如何在不更改 python matplotlib 中的热图的情况下更改颜色条的值?

如何在不更改AppBar的情况下更改TabBar的背景色?

如何在不影响滚动条颜色的情况下更改QScrollArea的背景颜色?

如何在不单击按钮的情况下使用颜色选择器更改背景颜色?

在Android中,如何在不禁用onClick颜色的情况下更改listView的背景颜色?

如何在不更改颜色的情况下禁用Vuetify按钮

如何在不绘制我自己的情况下更改UIPopoverPresentationController的箭头颜色

如何在不覆盖填充组的情况下更改箱线图点颜色

如何在不导入其他模块的情况下更改python中文本的颜色?

如何在不更改原始颜色的情况下使用着色器

如何在不丢失格式的情况下更改文本颜色

python - 如何在不更改前景大小的情况下增加背景大小?

如何在不更改Netbeans背景的情况下禁用JButton

如何在不丢失导航栏UI的情况下更改SwiftUI背景?

如何在不更改文本颜色本身的情况下更改输入字段中打字机的颜色?

如何在不使用CSS的情况下更改QPushButton背景颜色

Pygame如何在不删除其他任何内容的情况下更改背景颜色

如何在不影响 div 内容的情况下更改背景颜色透明度?

在适当的情况下更改字体颜色和背景颜色

我可以在不更改其他主题的情况下更改gedit的背景颜色吗?

如何在不更改图案的情况下更改HTML5画布中图像的颜色

Android:如何在不使用自定义布局的情况下更改AlertDialog标题文本颜色和背景颜色?

如何在不创建新工具栏布局的情况下使用XML更改Android工具栏背景颜色

如何在不更改R中图例颜色的情况下使用几种符号,颜色和填写ggmap?

如何在不填充选项背景色的情况下更改选择器背景色?

更改Drawable的颜色平衡