更改切换按钮图像onclick

时间:2014-05-22 09:11:29

标签: android android-layout togglebutton

我知道已经询问并回答herehere。我试过了两个,但没有一个适合我。

我有一个喜欢的按钮,如果按下它我会在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);
                }
            }
        });

函数被调用,执行正常,但图像没有变化。我做错了什么?

3 个答案:

答案 0 :(得分:1)

在OnClick方法中删除btnFav.setChecked(true)btnFav.setChecked(false)。它是一个togglebutton,它可以通过每次单击自动切换setChecked,然后将其重置为旧值。因此,在您的情况下,它始终具有相同的值(起始值) 我建议您使用setOnCheckedChangeListener代替onClickListener

答案 1 :(得分:0)

在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>

答案 2 :(得分:0)

尝试使用 android:button =“@ drawable / favorite_btn_style” android:background =“@ android:color / transparent”组合。要自定义复选框,收音机和切换按钮,您应该使用android:按钮而不是android:background。