如何检查背景图片

时间:2014-01-22 17:22:50

标签: android image background

我的应用程序中有几个按钮可以有不同的背景图像。 现在,在OnClick函数中,我需要检查背景图像是否是drawable中的图像名称“williboese”。

我试过这样:

    b.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            //b.setBackgroundColor(R.color.redwue);
            count++;
            if(arg0.getResources().equals(R.drawable.williboese)){
                Toast.makeText(MainActivity.this, "heeeee", Toast.LENGTH_SHORT).show();
            }
        }
    });

我知道此刻b有这个背景图片,但没有显示Toast。我做错了什么?

3 个答案:

答案 0 :(得分:1)

最简单的方法可能就是使用这样的标签:

btn.setTag(R.drawable.williboese);

然后与

进行比较
view.getTag().equals(R.drawable.williboese);

因为R.drawable是一个原语,这段代码不会完全正常工作,但你明白了......

您的代码有什么问题,您要将drawable的资源ID与视图的“resources”对象进行比较。你可以尝试:

arg0.getResources().getDrawable(R.drawable.williboese).equals(arg0.getBackground())

答案 1 :(得分:1)

在这里,您要尝试将Resourcesint进行比较,而true永远不会View ...

这个技巧可以帮助你......

设置后台资源ID时,请将该ID设置为b.setBackgroundResource(R.drawable.williboese); b.setTag(R.drawable.williboese); 的标记。

OnClickListener

并在b.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { int resId = (Integer) view.getTag(); if(resId == R.drawable.williboese) { // background is R.drawable.williboese image } } }); 中,您可以查看当前背景可绘制的内容......

{{1}}

答案 2 :(得分:1)

getResources不会返回您的想法,您可以在函数源中看到

private final Resources mResources;

public View(Context context) {
    mContext = context;
    mResources = context != null ? context.getResources() : null;
    ...
}

public Resources getResources() {
    return mResources;
}

它只返回与context.getResources()相同的内容,用于访问应用程序中的资源。

您无法检索视图背景的ID。你必须将它保存在别处。为此,您可以使用视图的setTag函数,您可以在其中保存以后可以检索的任何内容。 http://developer.android.com/reference/android/view/View.html#setTag(java.lang.Object)

b.setBackgroundResource(R.drawable.williboese);
b.setTag(R.drawable.williboese);

然后在监听器中进行比较

        Integer i = (Integer) view.getTag();

        if(i!= null && i == R.drawable.williboese) {
        }