0
<ToggleButton 
        android:id="@+id/toggle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/check"   
        android:layout_margin="10dp"
        android:textOn=""
        android:textOff=""
        android:focusable="false"
        android:focusableInTouchMode="false"
        android:layout_centerVertical="true"/>

<?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/selected_image"
          android:state_checked="true" />
    <!-- When not selected, use white-->
    <item android:drawable="@drawable/unselected_image"
        android:state_checked="false"/>

 </selector>

ドローアブルの代わりにを使用するにはどうすればよいですか?

私はこれを試しました:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_checked="true" android:color="@color/bg_blue"/>
    <item android:state_checked="false" android:color="@color/bg_light_grey"/>

</selector>

上記のセレクターをカラーフォルダーにbg_toggle.xmlという名前で定義しました

android:background="@color/bg_toggle"

これは例外を与えます:

android.view.InflateException:バイナリXMLファイルの行#50:クラスandroid.widget.ToggleButtonの拡張中にエラーが発生しました

org.xmlpull.v1.XmlPullParserException:バイナリXMLファイルの行#4:タグには「drawable」属性またはdrawableを定義する子タグが必要です

ありがとうございました

4

2 に答える 2

5

これを試して

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_checked="true" android:drawable="@color/bg_blue"/>
    <item android:state_checked="false" android:drawable="@color/bg_light_grey"/>

 </selector>

編集

androidDocから

注:カラーリソースは、XMLでドローアブルとして使用することもできます。たとえば、状態リストのドローアブルを作成するときに、android:drawable属性(android:drawable = "@ color / green")のカラーリソースを参照できます。

于 2012-12-20T13:49:36.583 に答える
-2

その代わりに、次のようにしてみてください。

  ToggleButton btnToggle=(ToggleButton) findViewById(R.id.<Your ToggleButtonId>);
    btnToggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if(isChecked)
                buttonView.setBackgroundColor(Color.RED);
            else buttonView.setBackgroundColor(Color.GREEN);
        }
    });
于 2012-12-20T13:53:16.820 に答える