我知道已经问过了,但是已经过时了:
我有2个按钮代表2个选择,如果选择了一个,则背景色变为黄色。但是,如果我想更改选择,则需要以某种方式重置按钮:
我已经尝试过重新设置它,但是出现了一些旧的设计。您能提供给我现代按钮样式的ID吗?并告诉我如何实现它?
int myChoice;
if (view == findViewById(R.id.choice1)){
myChoice = 1;
choice1.setBackgroundColor(getResources().getColor(R.color.highlightButton));
choice2.setBackgroundResource(android.R.drawable.btn_default);
}
else if (view == findViewById(R.id.choice2)){
myChoice = 2;
choice2.setBackgroundColor(getResources().getColor(R.color.highlightButton));
choice1.setBackgroundResource(android.R.drawable.btn_default);
}
}
答案 0 :(得分:0)
通过getBackground()使用标签。这样可以确保您始终将其恢复为原始状态。 在功能开始处添加以下内容
if (v.getTag() == null)
v.setTag(v.getBackground());
然后使用
代替setBackgroundResource
v.setBackground(v.getTag());
答案 1 :(得分:0)
从here开始,您可以将按钮的默认颜色存储到Drawable
中,然后将选择颜色(在您的情况下为黄色)获取到花药Drawable
中,然后切换背景颜色这些Drawable
变量
请在演示下方查看
public class MainActivity extends AppCompatActivity {
private Drawable mDefaultButtonColor;
private Drawable mSelectedButtonColor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button btn1 = findViewById(R.id.btn1);
final Button btn2 = findViewById(R.id.btn2);
mDefaultButtonColor = (btn1.getBackground());
mSelectedButtonColor = ContextCompat.getDrawable(this, R.color.buttonSelected);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
toggleButton(btn1, true);
toggleButton(btn2, false);
}
});
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
toggleButton(btn1, false);
toggleButton(btn2, true);
}
});
}
private void toggleButton(Button button, boolean isSelected) {
button.setBackground(isSelected ? mSelectedButtonColor : mDefaultButtonColor);
}
}