android - 在 Android Xamarin 中的 Activity 开始时更改可绘制的切换按钮

标签 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>

并且我使用静态 bool 变量来存储全局切换状态,以便在另一个 Activity 中再次使用它 所以我想要的是在不单击切换按钮的情况下更改创建的 Activity 上的可绘制按钮 我试过这段代码

speakerToggle = view.FindViewById<ToggleButton>(Resource.Id.speaker);
if(speaker_btn_checked == true ){
       speakerToggle.checked  = true; 
}

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

最佳答案

我通过用 Button 替换 ToggleButton 来解决这个问题,并从 Activity 类中以编程方式更改按钮图像,并为按钮状态创建静态变量,所以我的代码变成了这样

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

而且效果很好!!

关于android - 在 Android Xamarin 中的 Activity 开始时更改可绘制的切换按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46504647/

相关文章:

java - IntelliJ - 创建对象时识别类,但方法不会自动完成或编译

visual-studio - WiX 不嵌入二进制文件

android - 在 build.gradle 中编译具有 useLibrary 'app:transformClassesWithDexForDebug' 的项目时出现 'org.apache.http.legacy' 错误

node.js - 控制台窗口不再出现在我的 Visual Studio Node 控制台应用程序中

android - SearchView Android 中的自定义图标

android studio 没有链接到缺少的资源

java - Android系统如何告诉应用程序该应用程序已进入后台(不可见)?

android - 为什么组件不显示在 Android Studio 的设计模式中?

java - 如何处理 Android 键盘操作

visual-studio - 如何检查我是否需要安装 VCRedist?