[英]Change toggle button image 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
我检查项目是否已设置为收藏,然后将其setchecked
为true
:
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);
}
}
});
函数被调用并执行良好,但是图像没有变化。我在做什么错?
在您的OnClick方法中删除btnFav.setChecked(true)
和btnFav.setChecked(false)
。 这是一个切换按钮,每次单击即可单独切换setChecked,并将其重置为旧值。 因此,在您的情况下,它始终具有相同的值(起始值)。
我建议你还是用setOnCheckedChangeListener
代替onClickListener
。
在res / drawable文件夹中创建一个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>
尝试使用android:button =“ @ drawable / favorite_btn_style”和android:background =“ @ android:color / transparent”组合。 要自定义复选框,单选和切换按钮,您应该使用android:button而不是android:background。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.