2016-05-19 29 views
1

我想每次点击按钮时都改变android按钮的颜色。一旦用户点击一个按钮,我希望它可以改变颜色。然后,再次按下该按钮时,颜色将恢复到之前的状态。这里是我的尝试:如何更改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

我认为它总是需要isClicked的默认值,每当你点击按钮 – Dhiraj

+0

所以每次你只会得到一个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方法的变化。