为了解决VideoView在移除Fragment或设置为invisible/gone时出现的覆盖问题,可以尝试使用两种不同的方法。
方法一:通过在VideoView处使用setVisibility(View.VISIBLE)将其重新设置为可见,然后使用setVisibility(View.INVISIBLE)或setVisibility(View.GONE)来使其不可见。示例代码如下:
public void showVideoView() {
    mVideoView.setVisibility(View.VISIBLE);
}
public void hideVideoView() {
    mVideoView.setVisibility(View.INVISIBLE);
}
方法二:通过重新创建VideoView来解决问题。当要删除Fragment时,应该先释放VideoView。然后在需要其它页面的时候重新创建VideoView并添加到布局中。示例代码如下:
//在Fragment中添加构造函数
public MyFragment() {
    //释放VideoView
    if (mVideoView != null) {
        mVideoView.stopPlayback();
    }
}
//在Activity中添加方法
public void setUpVideoView() {
    mVideoView = new VideoView(this);
    RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
            ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.MATCH_PARENT);
    mRelativeLayout.addView(mVideoView, layoutParams);
    mVideoView.setVideoURI(videoUri);
    mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mediaPlayer) {
            // TODO Auto-generated method stub
        }
    });
}
//在Fragment中通过调用Activity中的方法来重新创建VideoView
((MyActivity)getActivity()).setUpVideoView();