在 Android Xamarin 中更改 activity 开始时可绘制的切换按钮
Change toggle button drawable at activity start in Android Xamarin
我制作了两个切换按钮,并编辑了切换按钮样式以在状态更改时更改切换图像,如上面的代码
这是我的切换按钮
<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>
并且我使用静态布尔变量来存储全局切换状态,以便在另一个 activity 中再次使用它
所以我想要的是更改 activity 上创建的可绘制按钮,而无需单击切换按钮
我试过这段代码
speakerToggle = view.FindViewById<ToggleButton>(Resource.Id.speaker);
if(speaker_btn_checked == true ){
speakerToggle.checked = true;
}
但它看起来像再次检查切换按钮,我只需要更改可绘制对象
我通过用 Button 替换 ToggleButton 来解决这个问题,并以编程方式从 activity class 更改按钮图像,并为按钮状态创建静态变量,所以我的代码变成了这样
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);
}
而且效果很好!!
我制作了两个切换按钮,并编辑了切换按钮样式以在状态更改时更改切换图像,如上面的代码
这是我的切换按钮
<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>
并且我使用静态布尔变量来存储全局切换状态,以便在另一个 activity 中再次使用它 所以我想要的是更改 activity 上创建的可绘制按钮,而无需单击切换按钮 我试过这段代码
speakerToggle = view.FindViewById<ToggleButton>(Resource.Id.speaker);
if(speaker_btn_checked == true ){
speakerToggle.checked = true;
}
但它看起来像再次检查切换按钮,我只需要更改可绘制对象
我通过用 Button 替换 ToggleButton 来解决这个问题,并以编程方式从 activity class 更改按钮图像,并为按钮状态创建静态变量,所以我的代码变成了这样
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);
}
而且效果很好!!