В моем макете есть SurfaceView (представляющий видео в пользовательской реализации ExoPlayer).
Я хочу переместить его на 100 пикселей вверх (чтобы он покидал экран вверху).
Я уже пробовал разные способы сделать это, и ни один не работал:
- настройка полей индивидуально (через
MarginLayoutParams
), - используя setMargins (с 4 параметрами),
- используя
.setTranslationY(...)
, но также и.animate().translationY(...)
, - применение переводов с анимацией (с продолжительностью, а также установкой ее на 0),
- установка переводов и отрицательных полей через xml (предварительный просмотр выглядит хорошо, но не во время выполнения),
- вложение с LinearLayout / RelativeLayout в качестве прямого родителя,
- применяя изменения к его прародителю FrameLayout.
Я заметил, что если я применяю эти изменения к любому другому элементу, они корректно перемещаются вверх, но не SurfaceView
.
Я даже смог анимировать переводы, чтобы элементы представления появлялись в верхней части экрана и располагались в углу.
Почему это происходит? Это ограничение самого класса SurfaceView
?
Я не мог найти много информации об этом. Только это кажется связанным: Перемещение SurfaceView (с предварительным просмотром камеры) влево от экрана
Текущее поведение:
Видеоплеер (обозначенный SurfaceView
) сжат/сжат.
то есть высота плеера уменьшается, оставляя место внизу, но этот элемент никогда не покидает экран вверху
Ожидаемое поведение:
Другие элементы перемещаются вверх и покидают экран, когда мы устанавливаем для них отрицательные верхние поля или отрицательные переводы по оси Y.