Android 如何更改切换按钮的颜色?

Android 如何更改切换按钮的颜色?,android,Android,可能重复: 我需要一个切换按钮在状态从绿色(真)变为红色(假)时改变颜色。如何更改切换按钮的颜色?在res/values文件夹中创建一个名为colors.xml的xml: <?xml version="1.0" encoding="utf-8"?> <resources> <color name="red">#ff0000</color> <color name="green">#00ff00</color>

可能重复:


我需要一个
切换按钮
在状态从绿色(真)变为红色(假)时改变颜色。如何更改切换按钮的颜色?

在res/values文件夹中创建一个名为colors.xml的xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="red">#ff0000</color>
    <color name="green">#00ff00</color>
</resources>

#ff0000
#00ff00
在drawable文件夹中,创建一个xml文件my_btn_toggle.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="false" android:drawable="@color/red"  />
    <item android:state_checked="true" android:drawable="@color/green"  />
</selector>

在xml部分定义切换按钮:

<ToggleButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="New ToggleButton"
    android:id="@+id/toggleButton"
    android:background="@drawable/my_btn_toggle"/>


我已经在这里提出并回答了这个问题:):这不会给出很好的结果,因为它超出了标准按钮的矩形形状。这会将整个按钮更改为绿色/红色。不是突出显示颜色。此解决方案不适用于最新的主题。
ToggleButton Btn=new ToggleButton(this);// or get it from the layout by ToggleButton Btn=(ToggleButton) findViewById(R.id.IDofButton);
        Btn.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                // TODO Auto-generated method stub
                if(isChecked)
                    buttonView.setBackgroundColor(Color.GREEN);
                else buttonView.setBackgroundColor(Color.RED);
            }
        });