2

我正在使用一个 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))

有人有其他解决方案吗?

提前致谢

4

6 回答 6

3

你应该使用Tag. setTag()使用和单击按钮时为按钮设置标签getTag()这是一个例子

于 2013-09-05T06:22:36.907 回答
0

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

于 2013-09-05T06:18:17.483 回答
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);
        }

    }
于 2013-09-05T06:21:18.040 回答
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++;
   }
  };
 }
于 2013-09-05T06:24:45.493 回答
0

如果您想在单击按钮时更改按钮的图像。首先,您应该在 res/value 中添加一些有关图像的信息。那么如果我们需要交换3张图片,只需要创建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>

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

于 2013-09-05T06:25:34.870 回答
0

尝试这样

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

  if(fDraw.hashCode() == sDraw.hashCode())
  {
   //same
  }
else
{
//not same
}
}
于 2013-09-05T06:27:30.670 回答