我动态创建了按钮。我只想更改我单击的按钮的背景颜色。例如,最初所有按钮都应具有灰色背景色。如果我单击了一个按钮,则单击的按钮背景颜色应更改为红色,其他按钮的背景颜色应为灰色。
这里我试了一下
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"));
}
});
}
答案 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;
}
所以主要思想是将所有按钮保存在一个数组中。如果其中一个单击,则获取该索引使其背景为红色。并将其他按钮(不是那个索引)的背景再次变成灰色。