将按钮重置为默认背景

时间:2019-01-06 19:41:06

标签: java android

我知道已经问过了,但是已经过时了:

我有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);
            }


        }

2 个答案:

答案 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);
    }

}