如何在 Android 中为 VideoView 字幕设置最大宽度

问题描述 投票:0回答:1

我目前有以下视频观看

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/myVideoView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <VideoView
        android:id="@+id/my_video_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerInParent="true"


    <RelativeLayout
        android:id="@+id/nav_bar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="10dp"
        android:layout_alignParentBottom="true">
        <ImageButton
            android:id="@+id/home"
            android:layout_width="49dp"
            android:layout_height="49dp"
            android:background="@drawable/exit_button_outline"
            android:src="@mipmap/btn_rdv_close"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:clickable="true"
            android:contentDescription="@string/home_btn_desc"/>

        <Button
            android:id="@+id/closed_captions"
            android:clickable="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/closed_caption_button"
            android:textStyle="bold"
            android:textSize="20dp"
            android:textColor="@color/white"
            android:background="@drawable/round_button_off"
            android:layout_alignParentBottom="true"
            android:layout_toLeftOf="@+id/home"
            android:layout_marginRight="10dp"
            android:nextFocusRight="@id/home"
            android:nextFocusLeft="@id/video_view"
            android:nextFocusDown="@id/video_view"
            android:nextFocusUp="@id/video_view"
            android:contentDescription="@string/closed_caption_button_content_description" />
    </RelativeLayout>

在代码中,我有以下内容:

videoView.addSubtitleSource(
    getClosedCaptionsFromFile(closedCaptionsFileName),
    MediaFormat.createSubtitleFormat("text/vtt", deviceLang)
)


videoView.setOnInfoListener { mp, what, extra ->
            var tracksInfo: Array<TrackInfo> = mp.trackInfo

            for ((index, track) in tracksInfo.withIndex()) {
                if (track.trackType == MEDIA_TRACK_TYPE_SUBTITLE) {
                    if (closedCaptions) {
                        mp.selectTrack(index)
                    } else {
                        mp.deselectTrack(index)
                    }
                }
            }
            true
        }

我们使用 VTT 文件作为字幕。问题是如果 VTT 文件中的文本很长,那么文本会与“closed_captions”按钮重叠。

有没有办法设置隐藏式字幕的最大宽度,使其不与字幕按钮重叠?如果标题超过最大宽度,它们应该换行。

图片:

android android-videoview
1个回答
0
投票

Android 似乎没有内置的方法来限制宽度。 但是,由于我使用的是 VTT 文件,因此可以通过更改

size
参数

通过 VTT 语法来完成此操作

https://developer.mozilla.org/en-US/docs/Web/API/WebVTT_API

© www.soinside.com 2019 - 2024. All rights reserved.