2014-01-05 38 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.setLayoutParams(lp);的videoview。这意味着这调整了视频视图的父级。当我暂时分离listfragment时,detailFragment仍然占据相同的高度,我仍然有一个listFragment的空间。我认为这是因为listFragment的FrameLayout仍然存在并占据屏幕的1/3。当listFragment从视图中分离出来时,如何让detailFragment占据整个屏幕。

回答

1

同样,您可以在Activity的回调中处理此问题;处于纵向模式时将其他Fragment分离,并在处于横向模式时将其重新附加。

+0

这看起来像我正在寻找的解决方案,但我的布局有点复杂。我已经更新了我的问题以包含更多信息。 –

+0

@JohnNg:你可以直接在XML布局资源中添加'Fragment'来代替它们的容器,然后使用我的解决方案,或者如果你不想这样做,那么通过调用' setVisibility(View.GONE)'就可以了。 – corsair992

+0

非常感谢!我用setVisibility()来代替。 –