我制作了两个切换按钮,我编辑了切换按钮样式,以更改状态更改时的切换图像,如上面的代码
这是我的切换按钮
<ToggleButton
android:id="@+id/speaker"
android:layout_width="25dip"
android:layout_height="25dip"
android:layout_margin="10dp"
android:textOn=""
android:textOff=""
android:focusable="false"
android:focusableInTouchMode="false"
android:layout_centerVertical="true"
android:background="@drawable/speaker_btn" />
和 drawable / speeker_btn.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- When selected, use grey -->
<item android:drawable="@drawable/speaker_on"
android:state_checked="true" />
<!-- When not selected, use white-->
<item android:drawable="@drawable/speaker_off"
android:state_checked="false"/>
</selector>
我使用静态布尔变量来存储切换状态全局,以便在另一个活动中再次使用它 所以我想要的是更改创建的活动上的按钮可绘制而不单击切换 我试过这段代码
speakerToggle = view.FindViewById<ToggleButton>(Resource.Id.speaker);
if(speaker_btn_checked == true ){
speakerToggle.checked = true;
}
但它看起来像再次重新检查切换按钮我只需要更改可绘制的
答案 0 :(得分:0)
我通过按Tab替换ToggleButton来解决这个问题,并以编程方式从活动类更改按钮图像,并为按钮状态创建静态变量,因此我的代码变为这样
Button speakerToggle = view.FindViewById<Button>(Resource.Id.speaker);
speakerToggle.Click += delegate{
if (am.SpeakerphoneOn == false)
{
speakerToggle.SetBackgroundResource(Resource.Drawable.speaker_on);
}else{
speakerToggle.SetBackgroundResource(Resource.Drawable.speaker_off);
}
};
在 onCreate 方法中,我创建了这个
if (am.SpeakerphoneOn == true){
speakerToggle.SetBackgroundResource(Resource.Drawable.speaker_on);
}else{
speakerToggle.SetBackgroundResource(Resource.Drawable.speaker_off);
}
它的效果非常好!!