Android изменить размер контейнера с анимацией - PullRequest
2 голосов
/ 27 января 2011

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

Есть мысли?

Ответы [ 2 ]

1 голос
/ 30 января 2011

Я кое-что понял. Я делаю это "трудным путем", изменяя размеры контейнера. Основной процесс выглядит следующим образом:

Сохранить параметры макета Получить физический размер контейнера Установите layoutparams с физической высотой Цикл с обработчиком, устанавливающим размер постепенно Когда это будет сделано, установите предыдущие параметры макета

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

Смотрите блог

http://www.touchtech.co/blog/resize-animation/

0 голосов
/ 13 июня 2011

Я знаю, что этот вопрос довольно старый, но я подумал, что это будет распространенной проблемой, прежде чем я сам столкнусь с ним.

Я почерпнул вдохновение из вашего кода, но вместо того, чтобы использовать отдельный классвот так, что я сделал, это расширил класс LinearLayout и добавил несколько методов, чтобы иметь возможность анимировать его при изменении содержимого (в моем случае я делаю некоторые дочерние представления VISIBLE или GONE).Все еще прорабатываются некоторые детали, но до сих пор это работает довольно хорошо.

Хорошо, что я могу получить доступ к / расширить метод onMeasure, поэтому мне не нужно оценивать размер после анимации,независимо от того, что у меня в контейнере, анимация всегда будет в нужном месте.

Надеюсь, это поможет

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