最近在做项目时发现一个问题,本来我是有几个按钮想做成类似单选的样子(我有两个xml文件分别是对于按钮凹凸的),几个按钮最多允许一个凹下去,如果在有凹按钮的情况下再按,那个按钮就会再变成凸出来的,然后我通过背景来判断哪个按钮按下。
一开始我直接问chatgpt,他给出的结果是这样
if (buttons.getBackground().getConstantState().equals(getResources().getDrawable(R.drawable.button_normal).getConstantState())) {
// Button is in normal state
} else {
// Button is in pressed state
}
然后我没多想直接就复制了,后来再调试的时候发现怎么也不对,
for (Button k :bts) {
k.setOnClickListener(new View.OnClickListener() {
boolean clicked = false;
@Override
public void onClick(View view) {
// 点击一个如果有其他已经被点击的状态,调回正常
if (!clicked) {
for (Button a : bts) {
if (a.getBackground().getConstantState().equals(ContextCompat.getDrawable(getContext(),R.drawable.button_pressed).getConstantState())) {
a.setBackgroundResource(R.drawable.button_normal);
}
}
}
b.setBackgroundResource(clicked ? R.drawable.button_normal : R.drawa