동영상을 재생할 수있는 앱이 있습니다. portrait
모드에서 동영상은 화면의 1/3을 차지하며 landscape
으로 변경하면 전체 화면으로 변경됩니다. 이것은 핸드 헬드 폰 레이아웃에서 잘 작동합니다. setLayoutParams
을 사용하여 onConfigurationChanged 핸들러에서 videoview 컨테이너의 레이아웃을 전체 화면으로 변경합니다. 방향을 바꿀 때 비디오 뷰를 다시 버퍼하지 않으려면 다른 레이아웃을 선언하는 대신이 작업을 수행했습니다.방향 변경에 대한 전체 화면 비디오
하지만 2 개의 조각을 사용하는 태블릿에는 다른 레이아웃이 있습니다. 비디오가 아래 부분에서 재생됩니다. 방향을 바꿀 때 layoutparams
을 어떻게 설정하여 전체 화면을 차지하고 다른 조각도 덮을 수 있습니다. 이 기능은 두 가지 모두에 의해 공유되는 detailsFragment
클래스에 의해 처리되므로 핸드 헬드 및 태블릿 레이아웃 모두에서 작동 할 수있는 접근 방법이 있으면 좋을 것입니다.
업데이트 : 다음은 내 레이아웃의 간결한 버전입니다. 의 onConfigurationChanged가 호출 될 때
main_activity.xml
<LinearLayout>
<FrameLayout id="listFragment" weight=1/>
<FrameLayout id="detailFragment" weight=2/>
</LinearLayout>
detailFragment.xml는
<RelativeLayout>
<TextView/>
<RelativeLayout>
<VideoView>
<RelativeLayout>
<Button/>
</RelativeLayout>
, 나는 RelativeLayout.LayoutParams을 만들고 videoview.setLayoutParams(lp);
를 사용하여 VideoView를 지켜 보면서로 설정합니다. 즉, 비디오 뷰의 부모 크기를 조정합니다. listFragment를 일시적으로 분리하면 detailFragment는 여전히 동일한 높이를 차지하고 listFragment에 대한 공간이 남아 있습니다. listFragment에 대한 FrameLayout이 여전히 있고 화면의 1/3을 차지하고 있기 때문에 이것이라고 생각합니다. 어떻게하면 viewFragment가 뷰에서 분리 될 때 전체 화면을 차지하도록 detailFragment를 가져올 수 있습니까?
이것은 내가 찾고있는 해결책처럼 보이지만 내 레이아웃은 조금 복잡합니다. 좀 더 많은 정보를 포함하도록 제 질문을 업데이트했습니다. –
@JohnNg : 컨테이너 대신 XML 레이아웃 리소스에'Fragment'를 직접 추가 한 다음 내 솔루션을 사용할 수도 있고 그렇게하지 않으려는 경우에는' 그것에 setVisibility (View.GONE)'. – corsair992
정말 고마워요! 대신 setVisibility()를 사용했습니다. –