以编程方式更改imageView的颜色

时间:2015-06-03 04:46:57

标签: android layout imageview

我只想使用代码更改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"));

但它不起作用。它只是保持原样的颜色。

以前是否有人这样做过,或者有更好的想法?

4 个答案:

答案 0 :(得分:4)

为什么要设置根视图的background。这句话就可以了:

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

关注:

还有一点是,您的imageView具有可见性invisible

android:visibility="invisible"

为什么要为imageview设置不可见属性?

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

参考此代码:

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

答案 3 :(得分:0)

如果您使用十六进制代码作为颜色,并且要将颜色设置为图像的背景,则这是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)