单击按钮后如何更改按钮的颜色?

时间:2021-02-23 07:40:38

标签: java android xml

我动态创建了按钮。我只想更改我单击的按钮的背景颜色。例如,最初所有按钮都应具有灰色背景色。如果我单击了一个按钮,则单击的按钮背景颜色应更改为红色,其他按钮的背景颜色应为灰色。

这里我试了一下

for (int i = 0; i < 5; i++) {
 Button myBtn = new Button(ProductDetailsActivity.this);
 myBtn.setText("My Button"+i);
 myBtn.setBackGroundColor(Color.parseColor("#cccccc"));
 myBtn.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View view) {
        myBtn.setBackGroundColor(Color.parseColor("#ff0000"));
     }
});
}

1 个答案:

答案 0 :(得分:0)

您的代码似乎合法。 但不是

myBtn.setBackGroundColor(Color.parseColor("#ff0000"));

你可以使用

myBtn.setBackGroundColor(Color.RED);

我认为您想根据单击的按钮动态更改所有按钮的颜色。并想让其他人变成灰色。

因此要实现这一点,您需要将按钮保留在数组中。然后通过访问其他索引,您可以修改它们。可以从 buttonText 字符串的末尾获取索引并解析为整数。

    Button[] buttonArray = new Button[4];

    for (int i = 0; i < 5; i++) {
 Button myBtn = new Button(ProductDetailsActivity.this);
 myBtn.setText("My Button"+i);
 myBtn.setBackGroundColor(Color.GREY);
 myBtn.setId(new Random().nextInt());
 myBtn.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View view) {

          for(int j=0; j<buttonArray.lenght;j++){
              if(view.getId() == buttonArray[j].getId()){
                   buttonArray[j].setBackgroundColor(Color.RED);
                }else{
                   buttonArray[j].setBackgroundColor(Color.GREY);
                }
             }
     }
});
 buttonArray[i]=myBtn;
}

所以主要思想是将所有按钮保存在一个数组中。如果其中一个单击,则获取该索引使其背景为红色。并将其他按钮(不是那个索引)的背景再次变成灰色。