Android Studio中Kotlin实现VideoView左侧黑边问题求助
解决VideoView播放视频左侧出现黑边的问题
1. 先排除视频源本身的问题
首先确认你导入的视频文件本身左侧没有黑边——用本地播放器打开视频检查,若视频本身带黑边,需先处理视频文件。
2. 调整VideoView的缩放与显示模式
黑边大多是视频分辨率与VideoView尺寸比例不匹配导致的,可通过以下两种方式修正:
方式一:在代码中设置媒体播放器的缩放模式
在setOnPreparedListener中添加缩放配置,强制视频按比例填充整个VideoView区域:
videoView.setOnPreparedListener { mediaPlayer -> mediaPlayer.isLooping = false // 按比例缩放填充View,超出部分裁剪,避免单侧黑边 mediaPlayer.setVideoScalingMode(MediaPlayer.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING) }
若想完整显示视频(不裁剪,可能上下/左右留边,但不会出现单侧黑边),可改用:
mediaPlayer.setVideoScalingMode(MediaPlayer.VIDEO_SCALING_MODE_SCALE_TO_FIT)
方式二:设置VideoView的ScaleType
在布局文件中给VideoView添加属性,或在代码中配置:
<VideoView android:id="@+id/videoView" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop" />
对应代码设置:
videoView.scaleType = VideoView.ScaleType.CENTER_CROP
centerCrop会让视频按比例放大填满View,超出部分被裁剪;若用fitXY会强制拉伸视频填满,但可能导致画面变形,不推荐。
3. 检查布局约束与尺寸
确保VideoView的布局参数没有被额外padding或margin限制,比如父布局是否有左侧padding,或VideoView的宽高是否设为固定值导致比例失调。建议将VideoView的宽高设为match_parent(或根据父布局约束自适应)。
修改后的完整playVideo函数示例
private fun playVideo() { val videoUri = Uri.parse("android.resource://" + requireActivity().packageName + "/" + R.raw.videooooo) Log.d("VideoPlayer", "URI do vídeo: $videoUri") try { videoView.setVideoURI(videoUri) // 设置ScaleType适配布局 videoView.scaleType = VideoView.ScaleType.CENTER_CROP videoView.setOnPreparedListener { mediaPlayer -> mediaPlayer.isLooping = false // 配合媒体播放器缩放模式 mediaPlayer.setVideoScalingMode(MediaPlayer.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING) } videoView.setOnCompletionListener { Log.d("VideoPlayer", "Vídeo reproduzido completamente.") } val mediaController = MediaController(requireContext()) mediaController.setAnchorView(videoView) videoView.setMediaController(mediaController) videoView.setOnTouchListener { _, _ -> mediaController.show() false } videoView.start() } catch (e: Exception) { Log.e("VideoPlayer", "Erro ao reproduzir vídeo: ${e.message}", e) } }
内容的提问来源于stack exchange,提问作者Ruan
相关产品推荐
相关产品推荐

