diff --git a/car-media-common/src/com/android/car/media/common/MediaButtonController.java b/car-media-common/src/com/android/car/media/common/MediaButtonController.java
index 48e0406..c399089 100644
--- a/car-media-common/src/com/android/car/media/common/MediaButtonController.java
+++ b/car-media-common/src/com/android/car/media/common/MediaButtonController.java
@@ -41,7 +41,9 @@
 import com.android.car.media.common.source.MediaSourceColors;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -54,6 +56,8 @@
 
     private static final String TAG = "MediaButton";
 
+    private final Map<String, ImageButton> mImageButtons = new HashMap<>();
+
     private Context mContext;
     private PlayPauseStopImageView mPlayPauseStopImageView;
     private View mPlayPauseStopImageContainer;
@@ -134,6 +138,7 @@
         mControlBar.setView(null, ControlBar.SLOT_RIGHT);
         mSkipNextAdded = false;
         mSkipPrevAdded = false;
+        mImageButtons.clear();
     }
 
     private ImageButton createIconButton(Drawable icon) {
@@ -228,12 +233,7 @@
             imageButtons.addAll(state.getCustomActions()
                     .stream()
                     .map(rawAction -> rawAction.fetchDrawable(mContext))
-                    .map(action -> {
-                        ImageButton button = createIconButton(action.mIcon);
-                        button.setOnClickListener(view ->
-                                mController.doCustomAction(action.mAction, action.mExtras));
-                        return button;
-                    })
+                    .map(action -> getOrCreateIconButton(action))
                     .collect(Collectors.toList()));
         }
         if (!mSkipPrevAdded && !imageButtons.isEmpty()) {
@@ -245,6 +245,21 @@
         mControlBar.setViews(imageButtons.toArray(new ImageButton[0]));
     }
 
+    private ImageButton getOrCreateIconButton(CustomPlaybackAction action) {
+        // Reuse the ImageButton with the same action identifier if it exists, because if the
+        // ImageButton is focused, replacing it with a new one will make it lose focus.
+        ImageButton button = mImageButtons.get(action.mAction);
+        if (button != null) {
+            button.setImageDrawable(action.mIcon);
+        } else {
+            button = createIconButton(action.mIcon);
+            mImageButtons.put(action.mAction, button);
+        }
+        button.setOnClickListener(view ->
+                mController.doCustomAction(action.mAction, action.mExtras));
+        return button;
+    }
+
     private void onPlayPauseStopClicked(View view) {
         if (mController == null) {
             return;
