2014-01-05 1 views
0

У меня есть приложение, которое будет воспроизводить видео. Когда в режиме portrait видео занимает 1/3 экрана, я меняю его на полноэкранный режим при изменении на landscape. Это прекрасно работает в мануале карманного телефона. Я использую setLayoutParams, чтобы изменить компоновку контейнера видеовидео в полноэкранном режиме на обработчике onConfigurationChanged. Я сделал это вместо объявления другого макета, потому что я не хочу, чтобы видеовизор был отступником при изменении ориентации.Полноэкранное видео с изменением ориентации

Но у меня есть другой макет для планшетов, который использует 2 фрагмента. Видео воспроизводится в нижнем фрагменте. Когда я меняю ориентацию, как я могу установить layoutparams, чтобы занять весь экран и покрыть другой фрагмент. Будет здорово, если будет подход, который будет работать как на карманных, так и на планшетах планшета, поскольку эта функциональность обрабатывается классом detailsFragment, который совместно используется обоими.

ОБНОВЛЕНИЕ: Вот краткая версия моего макета.
main_activity.xml

<LinearLayout> 
    <FrameLayout id="listFragment" weight=1/> 
    <FrameLayout id="detailFragment" weight=2/> 
</LinearLayout> 

detailFragment.xml

<RelativeLayout> 
    <TextView/> 
    <RelativeLayout> 
     <VideoView> 
    <RelativeLayout> 
    <Button/> 
</RelativeLayout> 

Когда onConfigurationChanged называется, я создаю RelativeLayout.LayoutParams и установить его в VideoView с помощью videoview.setLayoutParams(lp);. Это означает, что это изменяет размер родителя видео. Когда я временно отделяю listfragment, detailFragment по-прежнему занимает одну и ту же высоту, и у меня все еще есть место для listFragment. Я думаю, это потому, что FrameLayout для спискаFragment все еще существует и занимает 1/3 экрана. Как я могу получить detailFragment, чтобы занять весь экран, когда listFragment отсоединен от представления.

ответ

1

Снова вы можете справиться с этим в обратном вызове Activity; отсоедините другой Fragment, когда он находится в портретном режиме, и снова подключите его, когда он находится в ландшафтном режиме.

+0

Это похоже на решение, которое я ищу, но мой макет немного сложный. Я обновил свой вопрос, чтобы добавить немного больше информации. –

+0

@JohnNg: Вы можете либо добавить 'Fragment' непосредственно в ресурс компоновки XML вместо своих контейнеров, а затем использовать мое решение, или если вы не хотите этого делать, тогда скройте верхний контейнер, setVisibility (View.GONE) 'на нем. – corsair992

+0

Большое вам спасибо! Вместо этого я использовал setVisibility(). –