Что вы можете сделать, это получить окно и установить его высоту:
getWindow().setLayout(1000, 1000);
Это делает ваше окно больше, чем экран, делая ваш корневой вид, и, следовательно, ваше представление поверхности, возможно, содержится внутри Framelayout больше, чем экран.
Это сработало для меня, дайте мне знать.
Вышесказанное сработает, несмотря ни на что. То, что вы хотели бы сделать, это прослушать событие onSurfaceCreated
для вашего вида поверхности. Затем, после того как вы запустили вид с камеры и сможете рассчитать размер вашего виджета с предварительным просмотром, вы захотите изменить размер виджета контейнера.
Идея в том, что ваш контейнерный виджет (вероятно, FrameLayout
) хочет быть больше экрана. Сам экран ограничен активностью, поэтому сначала установите размер окна,
затем установите размер вашей структуры кадра (она всегда будет уменьшена до максимального размера окон, поэтому установите соответственно).
Я делаю всю эту логику после того, как мой onSurfaceCreated
закончен, я запустил предварительный просмотр. Я слушаю это событие в своей деятельности, реализуя небольшой интерфейс, так как мой предварительный просмотр камеры - это отдельный класс.
Работа на всех уровнях API> = 8