У меня есть приложение, которое будет воспроизводить видео. Когда в режиме 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 отсоединен от представления.
Это похоже на решение, которое я ищу, но мой макет немного сложный. Я обновил свой вопрос, чтобы добавить немного больше информации. –
@JohnNg: Вы можете либо добавить 'Fragment' непосредственно в ресурс компоновки XML вместо своих контейнеров, а затем использовать мое решение, или если вы не хотите этого делать, тогда скройте верхний контейнер, setVisibility (View.GONE) 'на нем. – corsair992
Большое вам спасибо! Вместо этого я использовал setVisibility(). –