上方的图标,R.drawable.register_checked 是选中图片
下方的图标, R.drawable.register_unchecked 是未选中图片
默认是上方的选中效果。点击按钮,取消选中;再次点击按钮,再次选中。
其实这是两张图片。关键在于图片必须跟着按钮改变。
一开始想用Button实现,纠结了很久,只有按上去和松开的效果,并没有点击后变背景图片的效果。
后来百度了很久,找到可以 用ToggleButton实现我想要的效果,在这里与大家分享。
XML:
android:textOn=""
android:textOff=""
这里若不设置文本内容为空,它会有默认的文字显示在背景图之上
<ToggleButton
android:id="@+id/btn_register_sms_confirm"
android:layout_width="30dip"
android:layout_height="24dip"
android:textOn=""
android:textOff=""
android:background="@drawable/register_checked"/> <!--这里是默认选中图片-->
JAVA:
引包的时候注意,别引错了。
import android.widget.CompoundButton.OnCheckedChangeListener;
这里是选中状态监听事件,不是点击事件
findViewById(R.id.btn_register_sms_confirm).setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
btnSmsConfirm.setChecked(isChecked);
btnSmsConfirm.setBackgroundResource(isChecked?R.drawable.register_checked:R.drawable.register_unchecked);
}
});