Изменить цвет фона кнопки на основе предыдущего цвета - PullRequest
0 голосов
/ 15 января 2019

У меня очень простая проблема

учтите, что я извлекаю строковое значение онлайн, используя 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 голосов
/ 15 января 2019

Попробуйте этот код:

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

            }

        }
    });
0 голосов
/ 15 января 2019

Попробуйте использовать переменные 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; 

    }

 }
...