Мне пришлось поискать источник VideoFragment
, чтобы понять это.VideoFragment
имеет простой SurfaceView
в качестве корневого элемента своего макета, и все, что вам нужно сделать, это заставить SurfaceView
соответствовать родительской (то есть экрану устройства) ширине и высоте.Для этого просто переопределите onVideoSizeChanged
и используйте getSurfaceView
, чтобы получить ссылку на частный пакет SurfaceView
, используемый в VideoFragment
.
@Override
protected void onVideoSizeChanged(int width, int height) {
switch (scaleMode) {
//Flag indicates that this video should stretch to screen
case MediaMetaData.SCALE_MODE_STRETCH:
View rootView = getView();
SurfaceView surfaceView = getSurfaceView();
ViewGroup.LayoutParams params = surfaceView.getLayoutParams();
params.height = rootView.getHeight();
params.width = rootView.getWidth();
surfaceView.setLayoutParams(params);
break;
//When the video shouldn't stretch, just invoke super to have the VideoFragment's default behavior which is fit to screen
default:
super.onVideoSizeChanged(width, height);
}
}
.