Есть ли способ заставить представление Android перерисовать фон?
Я установил рисованную фигуру с градиентом в качестве фона, который прекрасно работает, но после изменения высоты вида вы можете увидеть эти уродливые шаги градиента.
Что я могу сделать?
Я пробовал view.invalidate()
и view.refreshDrawableState()
без видимой разницы.
Спасибо!
// EDIT:
Вот еще несколько деталей и мой код:
После ваших ответов я думаю, что полоса является результатом моего, вероятно, плохого кода. Вот что я делаю:
- Масштабирование вида
- установка его новой ширины и высоты, потому что масштабированное представление не принимает пользовательский ввод в других областях, чем «старое» (см. странное (по крайней мере для меня) поведение Android управления после масштабирования / не принимает ввод во всей его области )
- попытка установить фон снова (который содержит градиент и прямоугольник с закругленными углами)
Вот мой код:
public void onAnimationEnd(Animation animation)
{
MyView view = (MyView) ((ExtendedScaleAnimation) animation).getView();
view.getLayoutParams().width = toWidth;
view.getLayoutParams().height = toHeight;
view.clearAnimation();
view.requestLayout();
view.refreshBackground(); // background will be changed
}
На устройстве вы можете видеть, что фон рисования изменен, но есть мерцание, которое мне кажется, что изменение фона применяется до того, как анимация закончится. Программно это должно быть закончено! Или я не прав?
Еще раз спасибо!