Android - сделать вид поверхности больше, чем родительский
У меня есть приложение на основе вкладок "Портретный режим", которое содержит SurfaceView (с предварительным просмотром камеры на нем) на одной из вкладок. Я создавал код своей камеры из демонстрации Android API, и у меня все настроено правильно, за исключением одного. Полученный предварительный просмотр камеры растягивается и масштабируется, чтобы предварительный просмотр выглядел не так.
В идеале я хочу визуализировать SurfaceView с исходным размером предварительного просмотра, заданным камерой на вкладке. Однако это будет включать в себя увеличение содержимого вкладки по сравнению с ее родительским элементом! (Или, скорее, больше, чем FrameLayout, в котором содержатся действия вкладки).
Как я могу добиться этого?
Изображение проблемы:
1 ответ
Сделайте FrameLayout корневым объектом, затем поместите в него вид с камеры, затем заголовок и виджет вкладки. Возможно, вам придется сделать некоторую сложную работу с настройками гравитации и укладкой верхнего / нижнего колонтитула в линейные макеты, но это определенно возможно.
иначе:
frame.addView(cameraPreview);
frame.addView(header);
frame.addView(footer);
Это будет рисовать объекты в слоях.
РЕДАКТИРОВАТЬ: Если вы не хотите использовать свой текущий макет кадра, просто сделайте еще один. Сложите верхний и нижний колонтитулы внутри линейного макета. Создайте новый макет фрейма, добавьте к нему линейный макет, а затем добавьте предварительный просмотр, чтобы нарисовать поверх него.