if anyone is still confused how to:
create res/layout/lb_playback_fragment.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/playback_fragment_root"
android:layout_width="match_parent"
android:transitionGroup="false"
android:layout_height="match_parent">
<com.phonegap.voyo.utils.NonOverlappingFrameLayout
android:id="@+id/playback_fragment_background"
android:transitionGroup="false"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<com.phonegap.voyo.utils.NonOverlappingFrameLayout
android:id="@+id/playback_controls_dock"
android:transitionGroup="true"
android:layout_height="match_parent"
android:layout_width="match_parent"/>
<androidx.media3.ui.SubtitleView
android:id="@+id/exoSubtitles"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center_horizontal"
android:layout_marginBottom="32dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp" />
<androidx.media3.ui.AspectRatioFrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center">
<androidx.media3.ui.SubtitleView
android:id="@+id/leanback_subtitles"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.media3.ui.AspectRatioFrameLayout>
create class NonOverlappingFrameLayout.java
package com.phonegap.voyo.utils;
import android.content.Context; import android.util.AttributeSet; import android.widget.FrameLayout; public class NonOverlappingFrameLayout extends FrameLayout { public NonOverlappingFrameLayout(Context context) { this(context, null); } public NonOverlappingFrameLayout(Context context, AttributeSet attrs) { super(context, attrs, 0); } public NonOverlappingFrameLayout(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } /** * Avoid creating hardware layer when Transition is animating alpha. */ @Override public boolean hasOverlappingRendering() { return false; } }
inside PlayerFragment
subtitleView = requireActivity().findViewById(R.id.leanback_subtitles)
player?.addListener(object:Player.Listener{ @Deprecated("Deprecated in Java") @Suppress("DEPRECATION") override fun onCues(cues: MutableList) { super.onCues(cues) subtitleView?.setCues(cues) } })