【问题标题】:Android : change the background color of click on same buttonAndroid:更改单击同一按钮的背景颜色
【发布时间】:2015-09-10 04:04:56
【问题描述】:

我的应用程序中有一个 TextView,并且想要更改相同 TextView 的背景颜色。当我第一次单击它时,它会是红色,第二次单击它会是绿色,第三次单击它会是蓝色背景有问题。

 textType = (TextView)findViewById(R.id.textRNG);
        textType.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v)
            {
                Drawable d = textType.getBackground();
                Log.e("textType "," click !!! ");

                if(d.getConstantState() == getResources().getDrawable(R.drawable.red_circle_shape).getConstantState())
                {
                    textType.setBackgroundResource(R.drawable.green_circle_shape);
                }
                if(d.getConstantState() == getResources().getDrawable(R.drawable.green_circle_shape).getConstantState())
                {
                    textType.setBackgroundResource(R.drawable.blue_circle_shape);
                }
                if(d.getConstantState() == getResources().getDrawable(R.drawable.blue_circle_shape).getConstantState())
                {
                    textType.setBackgroundResource(R.drawable.red_circle_shape);
                }


            }
        });

此鳕鱼无法正常工作。感谢适当。

【问题讨论】:

  • 引入一个计数变量并在每次点击时增加它。然后根据计数值改变颜色
  • 感谢所有代码都在工作。

标签: android


【解决方案1】:

创建一个全局变量x0 对其进行初始化。然后代码如下:

textType = (TextView)findViewById(R.id.textRNG); 
        textType.setOnClickListener(new View.OnClickListener() {
            @Override 
            public void onClick(View v)
            { 
            if(x<4)
            {
            x= x+1;
            }
            else{
            x = 1;
            }

            if(x==1)
            {
            // red color
            }
            else if(x==2)
            {
            // blue color
            }
            else if(x==3)
            {
            // green color
            }


            } 
        });

【讨论】:

    【解决方案2】:

    使用下面的代码,

    textType = (TextView)findViewById(R.id.textRNG);
        textType.setOnClickListener(new View.OnClickListener() {
            private int mCounter = 0;
            @Override
            public void onClick(View v)
            {
                if (mCounter == 0)
                    v.setBackgroundResource(R.drawable.red_circle_shape);
                else
                   if (mCounter == 1)
                    v.setBackgroundResource(R.drawable.green_circle_shape);
                else
                   v.setBackgroundResource(R.drawable.blue_circle_shape);
    
                mCounter++;
            }
        });
    

    【讨论】:

      【解决方案3】:

      试试这个;

      • 定义一个全局变量 int 类型。
      • 在你的 onClick() 中,增加 int 变量

        • 使用 switch 或 if 语句在变量增加时更改颜色,例如

        如果(变量 == 1) // 改变颜色为蓝色 否则如果(变量 == 2) // 将颜色改为黄色

      【讨论】:

        【解决方案4】:

        您好 使用以下代码更改颜色。将这些行粘贴到您的 textView Onclick 中。变量计数是一个全局变量。

            if (count == 0)
                txtView.setTextColor(colorcode1);
            else if (count == 1)
                txtView.setTextColor(colorcode2);
            else
                txtView.setTextColor(colorcode3);
            count++;
            if (count > 2)
                count = 0;
        

        【讨论】:

          【解决方案5】:

          试试下面的代码

          TextView textType = (TextView)findViewById(R.id.textRNG);

              textType.setOnClickListener(new View.OnClickListener() {
          
                  @Override
                  public void onClick(View v) {
                      // TODO Auto-generated method stub
                      switch(current)
                      {
                          case 1:
                          tv.setBackgroundColor(Color.parseColor("#00ff00"));
                          current = 2;
                          break;
                          case 2:
                              tv.setBackgroundColor(Color.parseColor("#0000ff"));
                              current = 3;
                              break;
                          case 3:
                              tv.setBackgroundColor(Color.parseColor("#ff0000"));
                              current = 1;
                              break;
                             default:
                                 break;
                      }
                  }
              });
          

          【讨论】:

            猜你喜欢
            • 2014-10-09
            • 2017-08-02
            • 1970-01-01
            • 2014-10-10
            • 2016-03-31
            • 1970-01-01
            • 1970-01-01
            • 2022-11-13
            相关资源
            最近更新 更多