1

在我的 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);
   }
   });     
 }
}
4

5 回答 5

1

在 AndroidonFocusChange之前被调用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,这里是一个如何在 XML 中定义它的示例。

于 2013-04-17T05:40:42.690 回答
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);
 }
}
});     
}
}
于 2013-04-17T05:44:58.170 回答
0

您正在切换按钮图像onFocusChangeListener而不是onClickListener. ToggleButton似乎适合您所描述的场景。

于 2013-04-17T05:40:54.920 回答
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 中,将图像按钮背景设置为此选择器。

这是选择器上的链接

于 2013-04-17T05:44:12.270 回答
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 部分

于 2013-04-17T05:47:52.980 回答