Видео выходит за пределы нижнего листа при прокруткеAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Видео выходит за пределы нижнего листа при прокрутке

Сообщение Anonymous »

Я работаю над приложением, в котором видеоплеер встроен в нижний лист. Когда я прокручиваю нижний лист, видео неожиданно выходит за пределы видимой области нижнего листа. Мне нужно, чтобы видео оставалось внутри нижнего листа при прокрутке, не нарушая макет.
Вот видео о проблеме, с которой я столкнулся.
Я создал составной видеоплеер, используя этот код:

Код: Выделить всё

@OptIn(UnstableApi::class)
@Composable
fun VideoPlayer(
modifier: Modifier = Modifier,
file: File,
) {
val context = LocalContext.current
val exoPlayer = remember { ExoPlayer.Builder(context).build() }

// Get the video URI from internal storage
val correctedFile = file.takeIf { it.name.endsWith(".mp4") } ?: File(file.parent, "${file.name}.mp4")
val videoUri = Uri.fromFile(correctedFile)

// Set the media source
val mediaItem = MediaItem.Builder()
.setUri(videoUri)
.setMimeType(MimeTypes.VIDEO_MP4) // Specify the correct MIME type
.build()
exoPlayer.setMediaItem(mediaItem)
exoPlayer.prepare()
exoPlayer.videoScalingMode = C.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING
exoPlayer.playWhenReady = true

// Add a listener to log errors
exoPlayer.addListener(object : Player.Listener {
override fun onPlayerError(error: PlaybackException) {
Timber.e("VideoPlayer", "Player error: ${error.message}")
}
})

// Use AndroidView to integrate ExoPlayer's PlayerView
AndroidView(
modifier = modifier
.clipToBounds(),
factory = { ctx ->
PlayerView(ctx).apply {
player = exoPlayer
resizeMode = AspectRatioFrameLayout.RESIZE_MODE_ZOOM
}
})

// Clean up the ExoPlayer when the composable is disposed
DisposableEffect(Unit) {
onDispose {
exoPlayer.release()
}
}
}
Изначально я подозревал, что проблема связана с AndroidView, но после замены PlayerView на ImageView все заработало как положено. Это говорит о том, что проблема конкретно связана с PlayerView.
В настоящее время я использую столбец с вертикальной прокруткой для заполнения содержимого нижнего листа. Я также пробовал использовать LazyColumn, но возникла та же проблема.
Кто-нибудь знает, что может быть причиной такого поведения с PlayerView? Как я могу решить эту проблему и обеспечить, чтобы видеопроигрыватель правильно оставался на нижнем листе во время прокрутки?

Подробнее здесь: https://stackoverflow.com/questions/789 ... -scrolling
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»