2016-05-19 11 views
1

ボタンをクリックするたびにアンドロイドボタンの色を変更したいと思っていました。ユーザーがボタンをクリックすると、色が変わるようにしたい。その後、ボタンをもう一度押すと、元の色に戻ります。ここに私の試みです: Androidボタンの色をonClickに変更するにはどうすればよいですか?

private void setupFollowButton(Button button, final Boolean isClicked) { 
    button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      Boolean isClickedDummy = !isClicked; 
      if(isClickedDummy) { 
       v.setBackgroundColor(Color.parseColor("#FF0000")); 
      } else { 
       v.setBackgroundColor(Color.parseColor("#FFFFFF")); 
      } 
     } 
    }); 
} 

はもともと、私はそれを望んでいたので、私は isClicked変数が変更されたことを確実に知っているだろうと私は色を変えることができるように isClicked = !isClicked。しかし、上記の方法は isClickedをfalseに変更するだけで、 trueに戻すことはできません。私がこれを理解できる方法はありますか?どんな助けもありがとう。ありがとう!

+0

私はそれが常にボタンの – Dhiraj

+0

をクリックするたびにisClickedのデフォルト値を取ると思うので、isClicked – Dhiraj

答えて

0

はこれを試してみてください。

isClicked = false; 

    private void setupFollowButton(Button button, final Boolean isClicked) { 
      button.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 
        if(isClicked) { 
         v.setBackgroundColor(Color.parseColor("#FF0000")); 
         isClicked = false; 
        } else { 
         v.setBackgroundColor(Color.parseColor("#FFFFFF")); 
         isClicked = true; 
        } 
       } 
      }); 
     } 
0

あなたが「isClickedDummy」の値を変更する必要があり、あなたがグローバルとしてそれを使用する必要があります。

Boolean isClickedDummy; // global after the declaration of your class 

isClickedDummy = true; // in your onCreate() 

private void setupFollowButton(Button button, final Boolean isClicked) { 
    button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      if(isClickedDummy) { 
       v.setBackgroundColor(Color.parseColor("#FF0000")); 
       isClickedDummy = false; 
      } else { 
       v.setBackgroundColor(Color.parseColor("#FFFFFF")); 
       isClickedDummy = true; 
      } 
     } 
    }); 
} 
1

あなたは描画可能なXMLすることができます:

<Button 
    android:id="@+id/button1" 
    android:background="@drawable/selector_xml_name" 
    android:layout_width="200dp" 
    android:layout_height="126dp" 
    android:text="Hello" /> 

selector_xml_name.xml

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

    <item android:drawable="@drawable/numpad_button_bg_selected" android:state_selected="true"></item> 
    <item android:drawable="@drawable/numpad_button_bg_pressed" android:state_pressed="true"></item> 
    <item android:drawable="@drawable/numpad_button_bg_normal"></item> 

</selector 
0

を使用すると、背景色を変更したい場合は、ボタンのBackgroundResourceを削除することを忘れないでください。

使用、次のとおりです。その後

btn.setBackgroundResource(0);

、「通常のボタンレイアウトは」消え、私はsetBackground方法の変更を表示します。

関連する問題