如何重新定位 Jetpack-media3/exoplayer 控制按钮?

mcc*_*mcc 2 android exoplayer exoplayer2.x

我通过 androidx.media3:media3-exoplayer:1.0.0-beta03 使用 exoplayer2。我的 XML 布局中有一个 androidx.media3.ui.PlayerView,然后在我的代码中,我使用 ExoPlayer.Builder 创建一个 Exoplayer 并将其分配给playerView.setPlayer。

作为播放器视图一部分的 PlayerControls 具有一排暂停、向前跳、向后跳按钮。它们显示在正中心,部分遮挡了视频。这感觉很愚蠢,因为手机表面可能非常高,但控件位于中心而不是死区。

Exoplayer 中似乎有很多外观自定义选项,但我没有找到一个可以移动播放器按钮的选项。在旧代码(android.widget.MediaController/android.widget.VideoView)中,有一排类似的按钮,但它们位于屏幕底部,下方有一个小的、令人愉悦的边距。我错过了什么吗?

老样子(好)
新样子(烦人)

mcc*_*mcc 5

居中似乎是 Jetpack Media3 特有的事情。如果将 exo_player_control_view.xml 替换为基本 Exoplayer 库中的一个,控件将向下移动到底部(但这会破坏其他内容)。

如果您想要使用 Media3 进行底部控制,我发现最好的方法是将 exo_player_control_view.xml 从任何版本的

https://github.com/androidx/media/blob/release/libraries/ui/src/main/res/layout/exo_player_control_view.xml

...对应于您的 media3 版本,并将其放入您的项目 app/src/main/res/layout/exo_player_control_view.xml 中。

然后编辑该文件进行更改,@id/exo_center_controls使其android:layout_gravity="center"变为android:layout_gravity="center_horizontal|bottom";另外,添加一个属性android:padding="@dimen/exo_styled_controls_padding"。经过这些更改后,我认为如果再多一点填充,效果可能会更好,但这至少能让你处于大概的状态。