There is no such method at this moment which allows you to directly set a custom controller on playerView. instead you have to add your controller to playerview in xml and the inflate it.
In my case I did the following for adding the controller (I assume, you are not planning to change controller while playing the video or after inflating it)
Step 1: Define your xml with just playerview and controller
//simple_exo_player.xml
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.exoplayer2.ui.PlayerView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/playerView"
xmlns:app="http://schemas.android.com/apk/res-auto"
app:rewind_increment="10000"
app:fastforward_increment="10000"
android:background="#000"
app:show_timeout="1000"
app:controller_layout_id="@layout/custom_playback_control"
app:resize_mode="fit">
Step 2: Inflate it and get the PlayerView
PlayerView customPlayerView;
View view = LayoutInflater.from(applicationContext).inflate(R.layout.simple_exo_player, null, false);`enter code here`
customPlayerView = (PlayerView) view.getRootView();
As you haven't mentioned the reason why you wanted to add it programmatically, I will assume the following.
- You want to have multiple custom controller, and use it based on view type
- you are planning to use it in recyclerview(or multiple view set) were instead of having playerview with custom controller already predefined in xml, you want to add it programatically
here's what you have to do:
create multiple layout files of playerview with different controllers by changing the line
app:controller_layout_id="your custom controller"
now get your custom playerview as written in step 2
add it to the your recyclerview at required position
FrameLayout playArea;
playArea = v.findViewById(R.id.exoplayer_frame);
playArea.addView(customPlayerView);