获得ImageView的颜色

时间:2015-07-04 11:14:53

标签: android android-resources

我希望获得之前已设置颜色的imageView的颜色ID。

ImageView im = findViewById(R.id.imageView);
im.setBackgroundColor(R.color.green);

我该怎么做?

int colorId = im.getBackgroundColorResourceId() // how do I do this?

1 个答案:

答案 0 :(得分:1)

ImageView类中没有函数来检索ImageView的颜色,因为它们不是设计为颜色而是设计为要显示的图像(因此名称ImageView)。如果您希望能够检索ImageView设置的颜色,您可以创建自己的自定义ImageView类,并提供所需的功能。

import android.content.Context;
import android.util.AttributeSet;
import android.widget.ImageView;

public class CustomImageView extends ImageView {

    int backgroundColor;

    public CustomImageView(Context context) {
        super(context);
    }

    public CustomImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomImageView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    public void setBackgroundColor(int color) {
        super.setBackgroundColor(color);
        backgroundColor = color;
    }

    public int getBackgroundColor() {
        return backgroundColor;
    }
}

此自定义类CustomImageView将覆盖函数setBackgroundColor(int color),并在此过程中将颜色存储到变量中,并设置背景颜色以便以后检索。函数getBackgroundColor()可用于检索此变量。

这不是最简单的解决方案,我相信还有很多其他解决方案,但这个对我来说最有意义。