在Android Xamarin的活动开始时更改切换按钮可绘制

时间:2017-09-30 16:16:10

标签: android visual-studio android-studio xamarin togglebutton

enter image description here

我制作了两个切换按钮,我编辑了切换按钮样式,以更改状态更改时的切换图像,如上面的代码

这是我的切换按钮

<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; 
}

但它看起来像再次重新检查切换按钮我只需要更改可绘制的

1 个答案:

答案 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);
}

它的效果非常好!!