我怎么知道ImageButton上的哪个图像?

时间:2013-09-05 06:13:12

标签: android image imagebutton

我正在使用一个ImageButton,它应该在每次点击后改变他的图像。这是我的代码,它没有运行:

public class MainActivity extends Activity {

ImageButton button;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    button = (ImageButton)findViewById(R.id.imageButton1);
    button.setOnClickListener(imgButtonHandler);
}

View.OnClickListener imgButtonHandler = new View.OnClickListener() {

    public void onClick(View v) {
        if(button.getBackground().equals(R.drawable.lok))
        {
            button.setBackgroundResource(0);
            button.setBackgroundResource(R.drawable.lok2);
        }

    }
};}

我知道这部分应该是错的:if(button.getBackground()。equals(R.drawable.lok))

有人有其他解决方案吗?

提前致谢

6 个答案:

答案 0 :(得分:2)

您应该使用Tag。使用setTag()设置按钮的标记,然后点击按钮getTag()Here is an example for that

答案 1 :(得分:0)

您还可以查看Imagebutton的Tag。  例如,每当你设置ImageButton的背景时,setTag(X)。  然后你可以比较它的Tag&然后改变它的背景&标签。

答案 2 :(得分:0)

* 试试这个*

public void onClick(View v) {
        if(button.getBackground().equals(R.drawable.lok))
        {

            if(Integer.parseInt(v.getTag())== R.drawable.lok2){

            }else{

            }
            button.setBackgroundResource(0);
            button.setBackgroundResource(R.drawable.lok2);
            button.setTag(R.drawable.lok2);
        }

    }

答案 3 :(得分:0)

假设您要更改5张图片,然后使用int i变量

public class MainActivity extends Activity {

  ImageButton button;
  int i=0;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);

     button = (ImageButton)findViewById(R.id.imageButton1);
     button.setOnClickListener(imgButtonHandler);
  }

    View.OnClickListener imgButtonHandler = new View.OnClickListener() {

    public void onClick(View v) {

        button.setBackgroundResource(0);
        switch (i % 5) {
    case 0:
        button.setBackgroundResource(R.drawable.image0);
        break;
    case 1:
        button.setBackgroundResource(R.drawable.image1);
        break;
    case 2:
        button.setBackgroundResource(R.drawable.image2);
        break;
    case 3:
        button.setBackgroundResource(R.drawable.image3);
        break;
    case 4:
        button.setBackgroundResource(R.drawable.image4);
        break;

    default:
        break;
    }
     i++;
   }
  };
 }

答案 4 :(得分:0)

如果要在单击按钮时更改按钮的图像。 首先,您应该在res / value中添加一些有关图像的信息。 然后 如果我们需要交换3个pictrues,只需要创建selector.xme int res / drawable

<selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_window_focused="false"
        android:drawable="@drawable/t3"/>
        <item android:state_focused="true"
        android:drawable="@drawable/t1"/>
        <item android:state_pressed="true"
        android:drawable="@drawable/t2"/>
        <item android:drawable="@drawable/t3"/>
</selector>

很抱歉我的英语不好,我的方式只是我以前试过

答案 5 :(得分:0)

尝试那样

 Drawable fDraw = button.getBackground();
 Drawable sDraw = getResources().getDrawable(R.drawable.lok);

  if(fDraw.hashCode() == sDraw.hashCode())
  {
   //same
  }
else
{
//not same
}
}