Сброс цвета фона представления - PullRequest
5 голосов
/ 08 сентября 2010

Я пытаюсь восстановить цвет фона в представлении.

У меня есть несколько выбираемых видов. Когда пользователь щелкает один из этих видов, выполняется следующий код, и вид становится желтым:

View newSelection, previousSelection;

...

if(previousSelection != null) {
    previousSelection.setBackgroundColor(Color.BLACK); // problem here
}
newSelection.setBackgroundColor(Color.YELLOW);

Однако я хочу сбросить цвет ранее выбранного вида. Однако я не знаю, какой это был цвет (я устанавливаю его в Color.BLACK в приведенном выше коде). Мне не удалось найти getBackgroundColor или подобный метод в классе View. Если бы он у меня был, я мог бы сохранить предыдущий цвет и просто вернуть его обратно при выборе нового вида.

Ответы [ 3 ]

5 голосов
/ 24 июня 2011

использовать View. getBackground (), он возвращает текущий 'Drawable' фон представления, который затем может быть использован в View. setBackgroundDrawable ()

View theView;
Drawable originalBackground;

...

originalBackground = theView.getBackground();

theView.setBackgroundColor(Color.YELLOW);

...
theView.setBackgroundDrawable(originalBackground);
2 голосов
/ 09 сентября 2010

Я не уверен, что именно вы пытаетесь достичь, но, возможно, ColorStateList пригодится здесь.

0 голосов
/ 09 сентября 2010

Вы можете попробовать установить предыдущий цвет в качестве тега вида.

Например

View newSelection, previousSelection;

newSelection.setTag(Color.Green);
previousSelection.setTag(Color.Black);

if(previousSelection != null) {
    previousSelection.setBackgroundColor((int)previousSelection.getTag());
}
newSelection.setBackgroundColor(Color.YELLOW);

Я не пробовал код, если есть ошибка, но поток о том, как реализовать это.

...