В моем случае у меня был RelativeLayout
на верхнем уровне (управление подкачкой пользовательского класса PageView). Ширина и высота родительского класса установлена на MATCH_PARENT
PageView также был RelativeLayout
и управлял своим собственным размером и позицией прокрутки на основе событий движения, захваченных его собственными классами ScaleGestureDetector
и GestureDetector
. В него также добавлено большое количество динамических видов (EditText, RadioGroup, флажок, SurfaceView для рисования и т. Д.)
Я обнаружил, что когда дочерние представления изменили свой размер / местоположение в ответ на изменение в PageView, любой дочерний вид, который существовал полностью внутри или вне области отображения экрана, имел правильные размеры. Другие, которые пересекали область, определенную экраном, имели правильное положение, но размер (ширина и высота) были обрезаны до границы окна. Это было независимо от того, установлено какое-либо из свойств RelativeLayout
или, по крайней мере, так мне показалось.
Решение в моем случае состояло в том, чтобы изменить самый внешний контейнер с RelativeLayout
на FrameLayout
и фиксированный бум. Следовательно, FrameLayout
(для подкачки), содержащий один изменяемый размер RelativeLayout
(для страницы), содержащий несколько динамических компонентов для элементов формы.