根据先前的颜色更改按钮的背景颜色

时间:2019-01-15 11:18:49

标签: java android onclick android-button

我有一个非常简单的问题

考虑我正在使用getText()方法在线检索字符串值

现在,根据字符串的值,我将按钮背景设置为红色和蓝色。

如果字符串值为红色,则按钮背景为红色,如果为蓝色,则背景为蓝色。

现在,如果我将onClicklistener设置为同一按钮,我想更改其背景颜色。如果是红色,则只要将其按下即可将其更改为蓝色,如果是蓝色,则将其更改为红色。

 mSolved = (Button) itemView.findViewById(R.id.book_solved); 
 mSolved.setText(g.getColorvalue()); 

 if("Blue".equals(holder.mSolved.getText())){
  mSolved.setBackgroundColor(BLUE);
 }
 if("Red".equals(holder.mSolved.getText())){
  .mSolved.setBackgroundColor(RED);
 }

mSolved.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
     if(Background color is already BLue)
 {
     change to Red
 }
 else
 {
    Change to Blue
 }
}

2 个答案:

答案 0 :(得分:1)

尝试使用FLAG变量。与此类似。

mSolved = (Button) itemView.findViewById(R.id.book_solved); 
mSolved.setText(g.getColorvalue()); 

boolean IS_BLUE = false;
boolean IS_RED = false;

if("Blue".equals(holder.mSolved.getText())){
   mSolved.setBackgroundColor(BLUE);
   IS_BLUE = true;
}
if("Red".equals(holder.mSolved.getText())){
   mSolved.setBackgroundColor(RED);
   IS_RED  = true;
}

mSolved.setOnClickListener(new View.OnClickListener() {


    @Override
    public void onClick(View v) {

     if(IS_BLUE)
     {
     mSolved.setBackgroundColor(RED);
     IS_RED  = true;
     IS_BLUE = false;
     }
    else if(IS_RED)
    {
    mSolved.setBackgroundColor(BLUE);
    IS_BLUE = true;
    IS_RED  = false; 

    }

 }

答案 1 :(得分:1)

尝试以下代码:

    mSolved = (Button) findViewById(R.id.book_solved);
    mSolved.setBackgroundColor(Color.parseColor("#009900"));
    mSolved.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View tView) {


            ColorDrawable buttonColor = (ColorDrawable) mSolved.getBackground();

            int colorId = buttonColor.getColor();
           // Log.i("INFO", "find color value for new color " + colorId);
            if (colorId == -3407872) {  // color is read
                mSolved.setBackgroundColor(Color.parseColor("#009900"));
            }
            else {

                mSolved.setBackgroundColor(Color.parseColor("#cc0000"));

            }

        }
    });