MediaController setAnchorview跨越整个屏幕

时间:2011-04-08 13:34:45

标签: java android android-layout

嘿 我正在尝试修复项目中的错误。 他们已经调用了一个mediacontroller并将其锚视图设置为视频视图。

但是当我播放视频时,mediacontroller被画在整个屏幕上,而不是像文档所暗示的那样漂浮在视频视图上方。

代码:

    MediaController mediaController = new MediaController(mVideoView.getContext());
    mediaController.setAnchorView(mVideoView);

    mVideoView.setMediaController(mediaController);

和XML;

     <VideoView
        android:layout_width="854px"
        android:layout_weight="1"
        android:id="@+id/welcome_video"
        android:layout_height="480px"
        android:layout_gravity="center"
    ></VideoView>

我看不出这里有什么问题。有人知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

我解决了这个问题,它与VideoView在里面的LinearLayout有关。它被设置为match_parent而不是wrap_content。

答案 1 :(得分:1)

更详细的答案:

使用LinearLayout

包装VideoView
<LinearLayout
    android:id="@+id/media_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true">

    <VideoView
        android:id="@+id/live_video"
        android:layout_width="match_parent"
        android:layout_height="240dp"
         />

</LinearLayout>

将setAnchor()放到 LinearLayout

mediaLayout = (LinearLayout)view.findViewById(R.id.media_layout);
liveVideo = (VideoView) view.findViewById(R.id.device_live_video);
mc = new MediaController(getActivity());
// Here it is
mc.setAnchorView(mediaLayout);

liveVideo.requestFocus();

liveVideo.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

    @Override
    public void onPrepared(MediaPlayer mp) {
        mp.setOnVideoSizeChangedListener(new MediaPlayer.OnVideoSizeChangedListener() {
            @Override
            public void onVideoSizeChanged(MediaPlayer mp, int width, int height) {
                LogUtils.LOGD(TAG, "Media Player Video Size changed.");
                  /*
                   *  add media controller
                   */
                liveVideo.setMediaController(mc);
                  /*
                   * and set its position on screen
                   */
                //mc.setAnchorView(liveVideo);
            }
        });
    }
});