我正在使用一个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))
有人有其他解决方案吗?
提前致谢
答案 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
}
}