按钮不会在点击时改变背景

时间:2014-11-06 17:45:40

标签: android button colors onclick

我有三个Buttons。我想按钮在点击时改变颜色,然后如果我再次点击按钮它会回到默认颜色。

问题:如果我点击第一个,它会改变颜色。但是,如果我点击第二个,它将不会改变颜色。但如果我再次点击第二个Button,它将最终改变颜色。有谁知道为什么第二次Button在第一次点击时不会改变颜色?

注意:调试后我注意到在点击第一个is_clickedButton设置为1。因此,当我点击第二个Button时,它认为它已经改变颜色并将其设置回默认值。有谁知道如何正确设置is_clicked标志?或者我还应该做些什么呢?

 int is_clicked = 0;


 public void ButtonOnClick(View v) {

            switch (v.getId()) {
              case R.id.button1:
                  if (is_clicked == 1){
                      button_list.get(0).getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0x00000000));;
                      is_clicked--;
                      break;
                  }
                  if (is_clicked == 0){
                      button_list.get(0).getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0xFF00FF00));
                      is_clicked++;
                      break;
                  }
                      break;
              case R.id.button2:
                  if (is_clicked == 1){
                      button_list.get(1).getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0x00000000));;
                      is_clicked--;
                      break;
                  }
                  if (is_clicked == 0){
                      button_list.get(1).getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0xFF00FF00));
                      is_clicked++;
                      break;
                  }
                      break;
              case R.id.button3:
                  if (is_clicked == 1){
                      button_list.get(2).getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0x00000000));;
                      is_clicked--;
                      break;
                  }
                  if (is_clicked == 0){
                      button_list.get(2).getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0xFF00FF00));
                      is_clicked++;
                      break;
                  }
                      break;
               }
           }

2 个答案:

答案 0 :(得分:1)

它只是一个简单的按钮

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

    <item android:drawable="@drawable/normal" android:state_enabled="true" android:state_focused="true"/>
    <item android:drawable="@drawable/pressed" android:state_enabled="true" android:state_pressed="true"/>
    <item android:drawable="@android:color/white"/>

</selector>

将此设为您按钮的背景

编辑:最后一个是默认状态,还有更多状态,如选择和禁用,尝试使用它们,您可以使用选择器创建许多功能。

这是一个不错的按钮。中风和禁用状态。

<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_pressed="true" >
    <shape>
      <solid
          android:color="#00aeef" />
      <stroke
          android:width="1dp"
          android:color="#0090bf" />
      <corners
          android:radius="6dp" />
      <padding
          android:left="10dp"
          android:top="10dp"
          android:right="10dp"
          android:bottom="10dp" />
    </shape>
<!--     #ef4444  #992f2f -->
</item>
  <item android:state_enabled="false">
      <shape>
      <solid
          android:color="#174574"/>
      <stroke
          android:width="1dp"
          android:color="#12375D" />
      <corners
          android:radius="6dp" />
      <padding
          android:left="10dp"
          android:top="10dp"
          android:right="10dp"
          android:bottom="10dp" />
    </shape>
  </item>
<!--   Default -->
  <item>
    <shape>
      <gradient
          android:startColor="#3399FF"
          android:endColor="#2E8AE6"
          android:angle="270" />
      <stroke
          android:width="1dp"
          android:color="#297CCF" />
      <corners
          android:radius="6dp" />
      <padding
          android:left="10dp"
          android:top="10dp"
          android:right="10dp"
          android:bottom="10dp" />
    </shape>
  </item>
</selector>

答案 1 :(得分:1)

虽然我同意Pedram ....根据您的要求,您使用xml中的标签。

将此标记放在每个按钮

     android:tag="0"

以防

  String clicked= (String)btn1.getTag();
  If ("0".equals(clicked)) {
     //set a color for your button
      button1.setTag("1");
   } else {
    //set a color for your button
      button1.setTag("0");
    }