Как установить BackgroundTintList кнопки по умолчанию? - PullRequest
0 голосов
/ 02 января 2019

Я изменяю свойство BackgroundTintList моей кнопки следующей строкой.

myButton.setBackgroundTintList(getColorStateList(R.color.green));

В результате моя кнопка меняет свой цвет с серого на зеленый, и это то, чего я хотел бы добиться.

Моя проблема в том, что позже я бы хотел вернуть первоначальный серый цвет кнопки, но я понятия не имею, как это сделать.Я пытался получить свойство BackgroundTintList кнопки в самом начале моего кода (до того, как я его изменил), но следующая строка возвращает NULL

ColorStateList buttonBackgroundTint = myButton.getBackgroundTintList();

Как только я установил BackgroundTintList в зеленый цвет, установив егозначение NULL меняет мою кнопку на белую, а не на ее стандартную серую.

Как можно было бы снова установить мою кнопку на серую?

Ответы [ 2 ]

0 голосов
/ 03 января 2019

Вы можете попробовать эту строку:

myButton.setBackgroundTintList(ColorStateList.valueOf(Color.parseColor("#d8d8d8")));

, если вы хотите изменить цвет кнопки обратно на ее исходный / исходный цвет.

0 голосов
/ 03 января 2019

Я не нашел способа сделать это легко. Единственный способ добиться вашей цели - удержать исходный фон Drawable, создать его клон, вручную подкрасить клон, а затем переключаться между этими новыми объектами рисования.

private Drawable original;
private Drawable tinted;

@Override
protected void onCreate(Bundle savedInstanceState) {
    ...

    this.original = button.getBackground();
    this.tinted = button.getBackground().getConstantState().newDrawable().mutate();

    ColorStateList custom = getResources().getColorStateList(R.color.my_button, getTheme());
    tinted.setTintList(custom);

    ...
}

Затем я могу написать button.setBackground(original) или button.setBackground(tinted), чтобы поменять их местами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...