1

私は2つの状態を持つボタンが欲しい:

  1. オフ
  2. オン(またはクリック)。

ボタンの背景に通常の画像を設定し、メソッドから画像(押された)を変更しようとしてonClickいますが、変更されません。

final Button button1 = (Button) findViewById(R.id.button1);

button1.setOnClickListener(new OnClickListener() {

private int flag;

@Override
public void onClick(View v) {
    if(flag==1)
    {
      button1.setBackgroundResource(R.drawable.on);
          flag=0;
    }
    if(flag==0)
    {
          button1.setBackgroundResource(R.drawable.off);
          flag=1;
    }

}
});
4

6 に答える 6

4
  if(flag==1)
    {
      button1.setBackgroundResource(R.drawable.on);
          flag=0;
    }
    else if(flag==0)
    {
          button1.setBackgroundResource(R.drawable.off);
          flag=1;
    }

が必要ですelse if。それ以外の場合、flag = 1 の場合は、背景をR.drawable.onおよびに設定しますflag=0;。次の命令はif (flag == 0)どちらが真で、もう一度入力しますbutton1.setBackgroundResource(R.drawable.off);

于 2013-07-18T07:14:52.977 に答える
3

ToggleButtonあなたの要件は だけでなく にも適合しますButton。ボタンをトグルボタンに変更して、setOnCheckedChangedListener()オンとオフの状態を処理できます。

以下のコードを使用

<ToggleButton 
        android:id="@+id/toggle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/check"   //check.xml
        android:textOn=""
        android:textOff=""/>

drawable xml を用意して drawable フォルダに格納します。xml ファイルに check.xml という名前を付けます

check.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/your_switched_on_image"
          android:state_checked="true" />
    <!-- When not selected, use white-->
    <item android:drawable="@drawableyour_switched_off_image"
        android:state_checked="false"/>

 </selector>
于 2013-07-18T07:19:00.583 に答える
2

あなたは他の部分で試すことができます

 @Override
public void onClick(View v) {
    if(flag==1)
    {
      button1.setBackgroundResource(R.drawable.on);
          flag=0;
    }
    else 
    {
          button1.setBackgroundResource(R.drawable.off);
          flag=1;
    }
}
});
于 2013-07-18T07:17:28.227 に答える