2014-05-22 237 views
0

我知道它已被问及回答herehere。我已经尝试了两种方法,但他们都不适合我。更改切换按钮图像onclick

我有一个喜欢的按钮,如果它被按下,我将这个项目设置为database中的最爱,并替换toggle button的图像,反之亦然。这里是我正在做它:

<ToggleButton 
    android:id="@+id/btnFavorite" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textOn="" 
    android:textOff="" 
    android:layout_marginRight="5dp" 
    android:background="@drawable/favorite_btn_style" /> 

这里是我的favorite_btn_style.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:drawable="@drawable/favourit_blue_btn" android:state_checked="true"/> 
<!-- pressed --> 

    <item android:drawable="@drawable/favourit_dark_btn"/> 
<!-- default/unchecked --> 

</selector> 

oncreate我检查,如果该项目已被设置为最喜欢的,然后setcheckedtrue

if (movieObj.getIsFav().intValue() == 1) { 
      btnFav.setChecked(true); 
     } 

这是我的按钮onclicklistener

btnFav.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
       if (!btnFav.isChecked()) { 
        btnFav.setChecked(true); 
        // set favorite 
        dbHelper.updateMovieFavorite(movieObj.getId().intValue(), 1); 
       } else { 
        btnFav.setChecked(false); 
        // set favorite 
        dbHelper.updateMovieFavorite(movieObj.getId().intValue(), 0); 
       } 
      } 
     }); 

函数被调用,执行得很好,但没有改变图像..我做错了什么?

回答

1

删除您OnClick方法既btnFav.setChecked(true)btnFav.setChecked(false)。它是一个切换按钮,每次点击都会自动切换setChecked,并将其重置为旧值。所以在你的情况下,它始终具有相同的值(起始值)。
我建议你宁愿使用setOnCheckedChangeListener而不是onClickListener

+0

'onclicklistener'工作正常.. – faizanjehangir

0

创建您的RES文件button_toggle.xml /绘制的文件夹

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:state_checked="false" 
     android:drawable="@drawable/ic_slide_switch_off" /> 
    <item 
     android:state_checked="true" 
     android:drawable="@drawable/ic_slide_switch_on" /> 
</selector> 
0

尝试使用机器人:按钮= “@绘制/ favorite_btn_style”机器人:背景= “@机器人:彩色/透明”组合。要定制复选框,收音机和切换按钮,您应该使用android:button而不是android:background。