Android:更改单击相同按钮的背景颜色

时间:2015-09-10 04:04:57

标签: android

我的应用程序中有一个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);
                }


            }
        });

这个鳕鱼不起作用。谢谢合适。

4 个答案:

答案 0 :(得分:2)

创建一个全局变量x,使用0对其进行初始化。那么代码如下:

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
            }


            } 
        });

答案 1 :(得分:1)

使用以下代码

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++;
        }
    });

答案 2 :(得分:0)

试试这个;

  • 定义全局变量int类型。
  • 在onClick()中,增加int Variable

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

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

答案 3 :(得分:0)

尝试以下代码

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;
            }
        }
    });