【问题标题】:Change button background color based on previous color根据以前的颜色更改按钮背景颜色
【发布时间】:2019-01-15 11:18:49
【问题描述】:

我有一个非常简单的问题

考虑我正在使用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
 }
}

【问题讨论】:

  • 可以使用FLAG变量来实现逻辑
  • 你能给我举个例子吗?
  • 检查答案。使用类似的 FLAG 变量

标签: java android onclick android-button


【解决方案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; 

    }

 }

【讨论】:

    【解决方案2】:

    试试这个代码:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-03
      • 2015-06-04
      • 1970-01-01
      • 2016-06-02
      • 2019-06-20
      • 2021-06-22
      相关资源
      最近更新 更多