diff --git a/libraries/decoder_av1/README.md b/libraries/decoder_av1/README.md
index d67d581321..75e89ad5f5 100644
--- a/libraries/decoder_av1/README.md
+++ b/libraries/decoder_av1/README.md
@@ -104,20 +104,19 @@ gets from the libgav1 decoder:
* GL rendering using GL shader for color space conversion
- * If you are using `ExoPlayer` with `LegacyPlayerView` or `PlayerView`,
- enable this option by setting `surface_type` of view to be
+ * If you are using `ExoPlayer` with `PlayerView`, enable this option by
+ setting the `surface_type` of the view to be
`video_decoder_gl_surface_view`.
* Otherwise, enable this option by sending `Libgav1VideoRenderer` a
message of type `Renderer.MSG_SET_VIDEO_OUTPUT` with an instance of
`VideoDecoderOutputBufferRenderer` as its object.
`VideoDecoderGLSurfaceView` is the concrete
- `VideoDecoderOutputBufferRenderer` implementation used by `PlayerView`
- and `LegacyPlayerView`.
+ `VideoDecoderOutputBufferRenderer` implementation used by `PlayerView`.
* Native rendering using `ANativeWindow`
- * If you are using `ExoPlayer` with `LegacyPlayerView` or `PlayerView`,
- this option is enabled by default.
+ * If you are using `ExoPlayer` with `PlayerView`, this option is enabled
+ by default.
* Otherwise, enable this option by sending `Libgav1VideoRenderer` a
message of type `Renderer.MSG_SET_VIDEO_OUTPUT` with an instance of
`SurfaceView` as its object.
diff --git a/libraries/decoder_vp9/README.md b/libraries/decoder_vp9/README.md
index c7516eb54b..fc63129a9d 100644
--- a/libraries/decoder_vp9/README.md
+++ b/libraries/decoder_vp9/README.md
@@ -117,20 +117,19 @@ gets from the libvpx decoder:
* GL rendering using GL shader for color space conversion
- * If you are using `ExoPlayer` with `LegacyPlayerView` or `PlayerView`,
- enable this option by setting `surface_type` of view to be
+ * If you are using `ExoPlayer` with `PlayerView`, enable this option by
+ setting the `surface_type` of the view to be
`video_decoder_gl_surface_view`.
* Otherwise, enable this option by sending `LibvpxVideoRenderer` a message
of type `Renderer.MSG_SET_VIDEO_OUTPUT` with an instance of
`VideoDecoderOutputBufferRenderer` as its object.
`VideoDecoderGLSurfaceView` is the concrete
- `VideoDecoderOutputBufferRenderer` implementation used by `PlayerView`
- and `LegacyPlayerView`.
+ `VideoDecoderOutputBufferRenderer` implementation used by `PlayerView`.
* Native rendering using `ANativeWindow`
- * If you are using `ExoPlayer` with `LegacyPlayerView` or `PlayerView`,
- this option is enabled by default.
+ * If you are using `ExoPlayer` with `PlayerView`, this option is enabled
+ by default.
* Otherwise, enable this option by sending `LibvpxVideoRenderer` a message
of type `Renderer.MSG_SET_VIDEO_OUTPUT` with an instance of
`SurfaceView` as its object.
diff --git a/libraries/ui/src/main/java/androidx/media3/ui/PlayerControlView.java b/libraries/ui/src/main/java/androidx/media3/ui/PlayerControlView.java
index 245b7bf5fe..a3e869f4ce 100644
--- a/libraries/ui/src/main/java/androidx/media3/ui/PlayerControlView.java
+++ b/libraries/ui/src/main/java/androidx/media3/ui/PlayerControlView.java
@@ -90,8 +90,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
* A view for controlling {@link Player} instances.
*
*
A StyledPlayerControlView can be customized by setting attributes (or calling corresponding
- * methods), overriding drawables, overriding the view's layout file, or by specifying a custom view
- * layout file.
+ * methods), or overriding drawables.
*
*
Attributes
*
@@ -189,123 +188,6 @@ import java.util.concurrent.CopyOnWriteArrayList;
* {@code exo_styled_controls_shuffle_on} - The shuffle icon when shuffling is enabled.
* {@code exo_styled_controls_vr} - The VR icon.
*
- *
- * Overriding the layout file
- *
- * To customize the layout of StyledPlayerControlView throughout your app, or just for certain
- * configurations, you can define {@code exo_player_control_view.xml} layout files in your
- * application {@code res/layout*} directories. But, in this case, you need to be careful since the
- * default animation implementation expects certain relative positions between children. See also Specifying a custom layout file.
- *
- * The layout files in your {@code res/layout*} will override the one provided by the library,
- * and will be inflated for use by StyledPlayerControlView. The view identifies and binds its
- * children by looking for the following ids:
- *
- *
- * - {@code exo_play_pause} - The play and pause button.
- *
- * - Type: {@link ImageView}
- *
- * - {@code exo_rew} - The rewind button.
- *
- * - Type: {@link View}
- *
- * - {@code exo_rew_with_amount} - The rewind button with rewind amount.
- *
- * - Type: {@link TextView}
- *
- Note: StyledPlayerControlView will programmatically set the text with the rewind
- * amount in seconds. Ignored if an {@code exo_rew} exists. Otherwise, it works as the
- * rewind button.
- *
- * - {@code exo_ffwd} - The fast forward button.
- *
- * - Type: {@link View}
- *
- * - {@code exo_ffwd_with_amount} - The fast forward button with fast forward amount.
- *
- * - Type: {@link TextView}
- *
- Note: StyledPlayerControlView will programmatically set the text with the fast
- * forward amount in seconds. Ignored if an {@code exo_ffwd} exists. Otherwise, it works
- * as the fast forward button.
- *
- * - {@code exo_prev} - The previous button.
- *
- * - Type: {@link View}
- *
- * - {@code exo_next} - The next button.
- *
- * - Type: {@link View}
- *
- * - {@code exo_repeat_toggle} - The repeat toggle button.
- *
- * - Type: {@link ImageView}
- *
- Note: StyledPlayerControlView will programmatically set the drawable on the repeat
- * toggle button according to the player's current repeat mode. The drawables used are
- * {@code exo_styled_controls_repeat_off}, {@code exo_styled_controls_repeat_one} and
- * {@code exo_styled_controls_repeat_all}. See the section above for information on
- * overriding these drawables.
- *
- * - {@code exo_shuffle} - The shuffle button.
- *
- * - Type: {@link ImageView}
- *
- Note: StyledPlayerControlView will programmatically set the drawable on the shuffle
- * button according to the player's current repeat mode. The drawables used are {@code
- * exo_styled_controls_shuffle_off} and {@code exo_styled_controls_shuffle_on}. See the
- * section above for information on overriding these drawables.
- *
- * - {@code exo_vr} - The VR mode button.
- *
- * - Type: {@link View}
- *
- * - {@code exo_subtitle} - The subtitle button.
- *
- * - Type: {@link ImageView}
- *
- * - {@code exo_fullscreen} - The fullscreen button.
- *
- * - Type: {@link ImageView}
- *
- * - {@code exo_minimal_fullscreen} - The fullscreen button in minimal mode.
- *
- * - Type: {@link ImageView}
- *
- * - {@code exo_position} - Text view displaying the current playback position.
- *
- * - Type: {@link TextView}
- *
- * - {@code exo_duration} - Text view displaying the current media duration.
- *
- * - Type: {@link TextView}
- *
- * - {@code exo_progress_placeholder} - A placeholder that's replaced with the inflated
- * {@link DefaultTimeBar}. Ignored if an {@code exo_progress} view exists.
- *
- * - Type: {@link View}
- *
- * - {@code exo_progress} - Time bar that's updated during playback and allows seeking.
- * {@link DefaultTimeBar} attributes set on the StyledPlayerControlView will not be
- * automatically propagated through to this instance. If a view exists with this id, any
- * {@code exo_progress_placeholder} view will be ignored.
- *
- * - Type: {@link TimeBar}
- *
- *
- *
- * All child views are optional and so can be omitted if not required, however where defined they
- * must be of the expected type.
- *
- *
Specifying a custom layout file
- *
- * Defining your own {@code exo_player_control_view.xml} is useful to customize the layout of
- * StyledPlayerControlView throughout your application. It's also possible to customize the layout
- * for a single instance in a layout file. This is achieved by setting the {@code
- * controller_layout_id} attribute on a StyledPlayerControlView. This will cause the specified
- * layout to be inflated instead of {@code exo_player_control_view.xml} for only the instance on
- * which the attribute is set.
- *
- * You need to be careful when you set the {@code controller_layout_id}, because the default
- * animation implementation expects certain relative positions between children.
*/
@UnstableApi
public class PlayerControlView extends FrameLayout {
diff --git a/libraries/ui/src/main/java/androidx/media3/ui/PlayerView.java b/libraries/ui/src/main/java/androidx/media3/ui/PlayerView.java
index e9c104f8de..7bc88cff91 100644
--- a/libraries/ui/src/main/java/androidx/media3/ui/PlayerView.java
+++ b/libraries/ui/src/main/java/androidx/media3/ui/PlayerView.java
@@ -77,9 +77,8 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
* A high level view for {@link Player} media playbacks. It displays video, subtitles and album art
* during playback, and displays playback controls using a {@link PlayerControlView}.
*
- *
A PlayerView can be customized by setting attributes (or calling corresponding methods),
- * overriding drawables, overriding the view's layout file, or by specifying a custom view layout
- * file.
+ *
A PlayerView can be customized by setting attributes (or calling corresponding methods), or
+ * overriding drawables.
*
*
Attributes
*
@@ -178,81 +177,6 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
* The drawables used by {@link PlayerControlView} (with its default layout file) can be overridden
* by drawables with the same names defined in your application. See the {@link PlayerControlView}
* documentation for a list of drawables that can be overridden.
- *
- * Overriding the layout file
- *
- * To customize the layout of PlayerView throughout your app, or just for certain configurations,
- * you can define {@code exo_player_view.xml} layout files in your application {@code res/layout*}
- * directories. These layouts will override the one provided by the library, and will be inflated
- * for use by PlayerView. The view identifies and binds its children by looking for the following
- * ids:
- *
- *
- * - {@code exo_content_frame} - A frame whose aspect ratio is resized based on the video
- * or album art of the media being played, and the configured {@code resize_mode}. The video
- * surface view is inflated into this frame as its first child.
- *
- * - Type: {@link AspectRatioFrameLayout}
- *
- * - {@code exo_shutter} - A view that's made visible when video should be hidden. This
- * view is typically an opaque view that covers the video surface, thereby obscuring it when
- * visible. Obscuring the surface in this way also helps to prevent flicker at the start of
- * playback when {@code surface_type="surface_view"}.
- *
- * - Type: {@link View}
- *
- * - {@code exo_buffering} - A view that's made visible when the player is buffering.
- * This view typically displays a buffering spinner or animation.
- *
- * - Type: {@link View}
- *
- * - {@code exo_subtitles} - Displays subtitles.
- *
- * - Type: {@link SubtitleView}
- *
- * - {@code exo_artwork} - Displays album art.
- *
- * - Type: {@link ImageView}
- *
- * - {@code exo_error_message} - Displays an error message to the user if playback fails.
- *
- * - Type: {@link TextView}
- *
- * - {@code exo_controller_placeholder} - A placeholder that's replaced with the inflated
- * {@link PlayerControlView}. Ignored if an {@code exo_controller} view exists.
- *
- * - Type: {@link View}
- *
- * - {@code exo_controller} - An already inflated {@link PlayerControlView}. Allows use
- * of a custom extension of {@link PlayerControlView}. {@link PlayerControlView} and {@link
- * DefaultTimeBar} attributes set on the PlayerView will not be automatically propagated
- * through to this instance. If a view exists with this id, any {@code
- * exo_controller_placeholder} view will be ignored.
- *
- * - Type: {@link PlayerControlView}
- *
- * - {@code exo_ad_overlay} - A {@link FrameLayout} positioned on top of the player which
- * is used to show ad UI (if applicable).
- *
- * - Type: {@link FrameLayout}
- *
- * - {@code exo_overlay} - A {@link FrameLayout} positioned on top of the player which
- * the app can access via {@link #getOverlayFrameLayout()}, provided for convenience.
- *
- * - Type: {@link FrameLayout}
- *
- *
- *
- * All child views are optional and so can be omitted if not required, however where defined they
- * must be of the expected type.
- *
- *
Specifying a custom layout file
- *
- * Defining your own {@code exo_player_view.xml} is useful to customize the layout of PlayerView
- * throughout your application. It's also possible to customize the layout for a single instance in
- * a layout file. This is achieved by setting the {@code player_layout_id} attribute on a
- * PlayerView. This will cause the specified layout to be inflated instead of {@code
- * exo_player_view.xml} for only the instance on which the attribute is set.
*/
@UnstableApi
public class PlayerView extends FrameLayout implements AdViewProvider {