2014-01-05 3 views
0

동영상을 재생할 수있는 앱이 있습니다. 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를 가져올 수 있습니까?

답변

1

다시 콜백 Activity에서 처리 할 수 ​​있습니다. 세로 모드 인 경우 Fragment을 분리하고 가로 모드 인 경우 다시 연결하십시오.

+0

이것은 내가 찾고있는 해결책처럼 보이지만 내 레이아웃은 조금 복잡합니다. 좀 더 많은 정보를 포함하도록 제 질문을 업데이트했습니다. –

+0

@JohnNg : 컨테이너 대신 XML 레이아웃 리소스에'Fragment'를 직접 추가 한 다음 내 솔루션을 사용할 수도 있고 그렇게하지 않으려는 경우에는' 그것에 setVisibility (View.GONE)'. – corsair992

+0

정말 고마워요! 대신 setVisibility()를 사용했습니다. –

관련 문제