以编程方式更改 imageView 的颜色

Change colour of imageView programmatically

我只想使用代码更改 imageView 对象的颜色,但事实证明这比听起来要困难得多。

这是我的 xml 对象:

 <ImageView
    android:id="@+id/lifeSquare"
    android:layout_width="50dp"
    android:layout_height="30dp"
    android:background="#2a80b9"
    android:visibility="invisible"
    android:adjustViewBounds="false"
    android:clickable="true"
    android:cropToPadding="false"
    android:padding="0dp"
    android:scaleType="fitStart" />

如您所见,它只是一个蓝色方块。我希望能够更改代码中的这一行:

    android:background="#2a80b9"

就是这样!我看过很多关于这个主题的帖子,最有希望的有以下解决方案:

View someView = findViewById(R.id.lifeSquare);
View root = someView.getRootView();
root.setBackgroundColor(Color.parseColor("#fffff"));

但是没用。它只是让颜色保持原样。

有没有人以前做过这个,或者有更好的想法?

为什么要设置 background 根视图。仅此声明即可:

ImageView someView = (ImageView) findViewById(R.id.lifeSquare);
someView.setBackgroundColor(Color.parseColor("#ffffff"));

关注:

还有一点是你的 imageView 有可见性 invisible :

android:visibility="invisible"

为什么要将图像视图设置为不可见 属性?

您可以将所有颜色十六进制代码保存在 color.xml 资源值文件夹内

imageView.setBackgroundColor(getResources().getColor(R.color.grey));

参考这段代码:

imageView.setColorFilter(imageView.getContext().getResources().getColor(R.color.desired_color), PorterDuff.Mode.SRC_ATOP);

如果您使用十六进制代码来设置颜色并希望将颜色设置为图像的背景,那么这就是 kotlin 代码。

    val bitmap = Bitmap.createBitmap(30, 30, Bitmap.Config.ARGB_8888)
    val canvas = Canvas(bitmap)
    val colorCode = "#ffffff"
    canvas.drawColor(Color.parseColor(colorCode))
    mImageViewLogo.setImageBitmap(bitmap)