繁体   English   中英

我如何知道ImageButton上的哪个图像?

[英]How can I know which Image on the ImageButton is?

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

有人有其他解决方案吗?

提前致谢

您应该使用Tag 使用setTag()以及单击按钮getTag()来为按钮设置标签。 这是一个例子

您还可以检查图像按钮的Tag 例如,只要设置ImageButton的Background,就可以使用setTag(X)。 那么您可以比较其标记,然后更改其背景和标记。

* 尝试一下*

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);
        }

    }

假设您要更改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++;
   }
  };
 }

如果要在单击按钮时更改按钮的图像。 首先,您应该在res / value中添加有关图像的一些信息。 然后,如果我们需要交换3个pictrue,则只需要创建选择器即可。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>

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

这样尝试

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM