在我的android项目中,我拍摄了2个图像按钮(开始和停止)。 当我按下START IMAGE BUTTON然后它再次转换为STOP IMAGE BUTTON但是当我按下STOP IMAGE BUTTON时它没有转换为START BUTTON.so让我知道问题出在哪里。
mImageButton.setOnFocusChangeListener(
new OnFocusChangeListener()
{
@Override
public void onFocusChange(View v, boolean hasFocus) {
// TODO Auto-generated method stub
if (hasFocus==true)
{
mImageButton.setImageResource(R.drawable.stop);
}
else
{
mImageButton.setImageResource(R.drawable.play);
}
}
});
mImageButton.setOnClickListener(
new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mImageButton.setImageResource(R.drawable.stop);
}
});
}
}
答案 0 :(得分:1)
在onFocusChange
之前调用Android onCLick
。无论您在onFocusChange
方法中设置的是什么,都会被忽略,因为onClick
将会被调用,然后它会将图片bak更改为R.drawable.stop
。
你根本不应该使用onFocusChange
来做你想做的事情。只使用onClick。
private boolean pCurrentlyPlaying = false;
...
mImageButton.setOnClickListener(
new OnClickListener() {
@Override
public void onClick(View v)
{
int image = pCurrentlyPlaying ? R.drawable.stop : R.drawable.play;
mImageButton.setImageResource(image);
pCurrentlyPlaying = !pCurrentlyPlaying ;
}
});
您还可以使用ToggleButton,here is an example如何在XML中定义它。
答案 1 :(得分:0)
您正在切换onFocusChangeListener
而不是onClickListener
中的按钮图像。 ToggleButton
似乎适合您所描述的情景。
答案 2 :(得分:0)
正确的方法是使用选择器
在drawable
中创建以下ImgBtnSelector.xml<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:drawable="@drawable/custom_info_bubble1" />
<item
android:state_pressed="false"
android:drawable="@drawable/custom_info_bubble" />
</selector>
在我们的布局中,xml将图像按钮背景设置为此选择器。
这里有一个关于选择器的link
答案 3 :(得分:0)
尝试此代码..可以帮助您。
boolean isStart = true ;
boolean isStop = false;
mImageButton.setOnClickListener(
new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(isStart){
isStart =false ;
isStop = true ;
mImageButton.setImageResource(R.drawable.play);
}else{
isStart = true ;
isStop = false;
mImageButton.setImageResource(R.drawable.stop);
}
}
});
}
}
答案 4 :(得分:0)
Boolean isStart=true;//This is global
mImageButton.setOnClickListener(
new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(isStart)
mImageButton.setImageResource(R.drawable.stop);
else
mImageButton.setImageResource(R.drawable.start);
isStart=!isStart;
}
});
}
}
这是你需要松开onfocusChanged部分