diff --git a/res/layout/fragment_clock_settings.xml b/res/layout/fragment_clock_settings.xml
index d52ebdf..3778698 100644
--- a/res/layout/fragment_clock_settings.xml
+++ b/res/layout/fragment_clock_settings.xml
@@ -102,33 +102,22 @@
                 android:orientation="vertical"
                 android:clipChildren="false">
 
-                <FrameLayout
+                <HorizontalScrollView
+                    android:id="@+id/color_options_scroll_view"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:layout_marginBottom="16dp"
-                    android:clipChildren="false">
-
-                    <androidx.recyclerview.widget.RecyclerView
+                    android:scrollbars="none">
+                    <LinearLayout
                         android:id="@+id/color_options"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
                         android:clipToPadding="false"
                         android:paddingHorizontal="16dp"
-                        android:clipChildren="false" />
-
-                    <!--
-                    This is just an invisible placeholder put in place so that the parent keeps its
-                    height stable as the RecyclerView updates from 0 items to N items. Keeping it
-                    stable allows the layout logic to keep the size of the preview container stable
-                    as well, which bodes well for setting up the SurfaceView for remote rendering
-                    without changing its size after the content is loaded into the RecyclerView.
-                    -->
-                    <include
-                        layout="@layout/clock_color_option"
+                        android:layout_marginBottom="16dp"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
-                        android:visibility="invisible" />
-                </FrameLayout>
+                        android:orientation="horizontal"
+                        android:divider="@drawable/horizontal_divider_8dp"
+                        android:showDividers="middle"/>
+                </HorizontalScrollView>
 
                 <SeekBar
                     android:id="@+id/slider"
diff --git a/src/com/android/customization/picker/clock/ui/binder/ClockSettingsBinder.kt b/src/com/android/customization/picker/clock/ui/binder/ClockSettingsBinder.kt
index 4664bd0..619dd6d 100644
--- a/src/com/android/customization/picker/clock/ui/binder/ClockSettingsBinder.kt
+++ b/src/com/android/customization/picker/clock/ui/binder/ClockSettingsBinder.kt
@@ -16,9 +16,11 @@
 package com.android.customization.picker.clock.ui.binder
 
 import android.content.res.Configuration
+import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.FrameLayout
+import android.widget.LinearLayout
 import android.widget.SeekBar
 import androidx.core.view.isInvisible
 import androidx.core.view.isVisible
@@ -35,10 +37,9 @@
 import com.android.customization.picker.clock.ui.view.ClockViewFactory
 import com.android.customization.picker.clock.ui.viewmodel.ClockSettingsViewModel
 import com.android.customization.picker.color.ui.binder.ColorOptionIconBinder
-import com.android.customization.picker.color.ui.viewmodel.ColorOptionIconViewModel
 import com.android.customization.picker.common.ui.view.ItemSpacing
 import com.android.wallpaper.R
-import com.android.wallpaper.picker.option.ui.adapter.OptionItemAdapter
+import com.android.wallpaper.picker.option.ui.binder.OptionItemBinder
 import kotlinx.coroutines.flow.mapNotNull
 import kotlinx.coroutines.launch
 
@@ -46,6 +47,7 @@
 object ClockSettingsBinder {
     private const val SLIDER_ENABLED_ALPHA = 1f
     private const val SLIDER_DISABLED_ALPHA = .3f
+    private const val COLOR_PICKER_ITEM_PREFIX_ID = 1234
 
     fun bind(
         view: View,
@@ -60,25 +62,7 @@
         tabView.adapter = tabAdapter
         tabView.layoutManager = LinearLayoutManager(view.context, RecyclerView.HORIZONTAL, false)
         tabView.addItemDecoration(ItemSpacing(ItemSpacing.TAB_ITEM_SPACING_DP))
-
-        val colorOptionContainerView: RecyclerView = view.requireViewById(R.id.color_options)
-        val colorOptionAdapter =
-            OptionItemAdapter(
-                layoutResourceId = R.layout.clock_color_option,
-                lifecycleOwner = lifecycleOwner,
-                bindIcon = { foregroundView: View, colorIcon: ColorOptionIconViewModel ->
-                    val viewGroup = foregroundView as? ViewGroup
-                    val night =
-                        (view.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK ==
-                            Configuration.UI_MODE_NIGHT_YES)
-                    viewGroup?.let { ColorOptionIconBinder.bind(viewGroup, colorIcon, night) }
-                }
-            )
-        colorOptionContainerView.adapter = colorOptionAdapter
-        colorOptionContainerView.layoutManager =
-            LinearLayoutManager(view.context, RecyclerView.HORIZONTAL, false)
-        colorOptionContainerView.addItemDecoration(ItemSpacing(ItemSpacing.ITEM_SPACING_DP))
-
+        val colorOptionContainerListView: LinearLayout = view.requireViewById(R.id.color_options)
         val slider: SeekBar = view.requireViewById(R.id.slider)
         slider.setOnSeekBarChangeListener(
             object : SeekBar.OnSeekBarChangeListener {
@@ -145,18 +129,45 @@
 
                 launch {
                     viewModel.colorOptions.collect { colorOptions ->
-                        colorOptionAdapter.setItems(colorOptions)
+                        colorOptions.forEachIndexed { index, colorOption ->
+                            colorOption.payload?.let { payload ->
+                                val item =
+                                    LayoutInflater.from(view.context)
+                                        .inflate(
+                                            R.layout.color_option_2,
+                                            colorOptionContainerListView,
+                                            false,
+                                        ) as LinearLayout
+                                val darkMode =
+                                    (view.resources.configuration.uiMode and
+                                        Configuration.UI_MODE_NIGHT_MASK ==
+                                        Configuration.UI_MODE_NIGHT_YES)
+                                ColorOptionIconBinder.bind(item, payload, darkMode)
+                                OptionItemBinder.bind(
+                                    view = item,
+                                    viewModel = colorOptions[index],
+                                    lifecycleOwner = lifecycleOwner,
+                                    foregroundTintSpec = null,
+                                )
+
+                                val id = COLOR_PICKER_ITEM_PREFIX_ID + index
+                                item.id = id
+                                colorOptionContainerListView.addView(item)
+                            }
+                        }
                     }
                 }
 
                 launch {
                     viewModel.selectedColorOptionPosition.collect { selectedPosition ->
                         if (selectedPosition != -1) {
-                            // We use "post" because we need to give the adapter item a pass to
-                            // update the view.
-                            colorOptionContainerView.post {
-                                colorOptionContainerView.smoothScrollToPosition(selectedPosition)
-                            }
+                            val colorOptionContainerListView: LinearLayout =
+                                view.requireViewById(R.id.color_options)
+                            val selectedView =
+                                colorOptionContainerListView.requireViewById<View>(
+                                    COLOR_PICKER_ITEM_PREFIX_ID + selectedPosition
+                                )
+                            selectedView.parent.requestChildFocus(selectedView, selectedView)
                         }
                     }
                 }
