diff --git a/res/xml/accessibility_text_reading_options.xml b/res/xml/accessibility_text_reading_options.xml
index 7fd5ff9..513920b 100644
--- a/res/xml/accessibility_text_reading_options.xml
+++ b/res/xml/accessibility_text_reading_options.xml
@@ -27,7 +27,6 @@
 
     <com.android.settings.widget.LabeledSeekBarPreference
         android:key="font_size"
-        android:selectable="true"
         android:summary="@string/short_summary_font_size"
         android:title="@string/title_font_size"
         settings:iconEnd="@drawable/ic_add_24dp"
@@ -38,7 +37,6 @@
 
     <com.android.settings.widget.LabeledSeekBarPreference
         android:key="display_size"
-        android:selectable="true"
         android:summary="@string/screen_zoom_short_summary"
         android:title="@string/screen_zoom_title"
         settings:iconEnd="@drawable/ic_add_24dp"
diff --git a/res/xml/gesture_navigation_settings.xml b/res/xml/gesture_navigation_settings.xml
index 09bb870..022583c 100644
--- a/res/xml/gesture_navigation_settings.xml
+++ b/res/xml/gesture_navigation_settings.xml
@@ -46,7 +46,6 @@
             android:key="gesture_left_back_sensitivity"
             android:title="@string/left_edge"
             android:max="2"
-            android:selectable="true"
             settings:textStart="@string/low_label"
             settings:textEnd="@string/high_label"/>
 
@@ -54,7 +53,6 @@
             android:key="gesture_right_back_sensitivity"
             android:title="@string/right_edge"
             android:max="2"
-            android:selectable="true"
             settings:textStart="@string/low_label"
             settings:textEnd="@string/high_label"/>
     </PreferenceCategory>
diff --git a/res/xml/power_menu_settings.xml b/res/xml/power_menu_settings.xml
index 864cf1b..e5e2daa 100644
--- a/res/xml/power_menu_settings.xml
+++ b/res/xml/power_menu_settings.xml
@@ -36,7 +36,6 @@
         android:key="gesture_power_menu_long_press_for_assist_sensitivity"
         android:title="@string/power_menu_long_press_for_assist_sensitivity_title"
         android:summary="@string/power_menu_long_press_for_assist_sensitivity_summary"
-        android:selectable="true"
         settings:textStart="@string/power_menu_long_press_for_assist_sensitivity_low_label"
         settings:textEnd="@string/power_menu_long_press_for_assist_sensitivity_high_label"
         settings:controller="com.android.settings.gestures.LongPressPowerSensitivityPreferenceController"
diff --git a/src/com/android/settings/widget/LabeledSeekBarPreference.java b/src/com/android/settings/widget/LabeledSeekBarPreference.java
index 3e09523..5d10116 100644
--- a/src/com/android/settings/widget/LabeledSeekBarPreference.java
+++ b/src/com/android/settings/widget/LabeledSeekBarPreference.java
@@ -26,12 +26,12 @@
 import android.widget.SeekBar;
 import android.widget.TextView;
 
-import androidx.annotation.Nullable;
 import androidx.core.content.res.TypedArrayUtils;
 import androidx.preference.PreferenceViewHolder;
 
 import com.android.internal.util.Preconditions;
 import com.android.settings.R;
+import com.android.settings.Utils;
 
 /**
  * A labeled {@link SeekBarPreference} with left and right text label, icon label, or both.
@@ -61,8 +61,6 @@
     private final int mIconStartContentDescriptionId;
     private final int mIconEndContentDescriptionId;
     private OnPreferenceChangeListener mStopListener;
-    @Nullable
-    private CharSequence mSummary;
     private SeekBar.OnSeekBarChangeListener mSeekBarChangeListener;
 
     public LabeledSeekBarPreference(Context context, AttributeSet attrs, int defStyleAttr,
@@ -97,8 +95,6 @@
         Preconditions.checkArgument(!(mIconEndContentDescriptionId != 0 && mIconEndId == 0),
                 "The resource of the iconEnd attribute may be invalid or not set, "
                         + "you should set the iconEnd attribute and have the valid resource.");
-
-        mSummary = styledAttrs.getText(R.styleable.Preference_android_summary);
         styledAttrs.recycle();
     }
 
@@ -112,6 +108,17 @@
     public void onBindViewHolder(PreferenceViewHolder holder) {
         super.onBindViewHolder(holder);
 
+        final TextView summaryView = (TextView) holder.findViewById(android.R.id.summary);
+        boolean isSummaryVisible = false;
+        if (summaryView != null) {
+            isSummaryVisible = (summaryView.getVisibility() == View.VISIBLE);
+        }
+        final TextView titleView = (TextView) holder.findViewById(android.R.id.title);
+        if (titleView != null && !isSelectable() && isEnabled() && isSummaryVisible) {
+            titleView.setTextColor(
+                    Utils.getColorAttr(getContext(), android.R.attr.textColorPrimary));
+        }
+
         final TextView startText = (TextView) holder.findViewById(android.R.id.text1);
         if (mTextStartId > 0) {
             startText.setText(mTextStartId);
@@ -132,15 +139,6 @@
             seekBar.setTickMark(tickMark);
         }
 
-        final TextView summary = (TextView) holder.findViewById(android.R.id.summary);
-        if (mSummary != null) {
-            summary.setText(mSummary);
-            summary.setVisibility(View.VISIBLE);
-        } else {
-            summary.setText(null);
-            summary.setVisibility(View.GONE);
-        }
-
         final ViewGroup iconStartFrame = (ViewGroup) holder.findViewById(R.id.icon_start_frame);
         final ImageView iconStartView = (ImageView) holder.findViewById(R.id.icon_start);
         updateIconStartIfNeeded(iconStartFrame, iconStartView, seekBar);
@@ -188,25 +186,6 @@
         notifyChanged();
     }
 
-    @Override
-    public void setSummary(CharSequence summary) {
-        super.setSummary(summary);
-        mSummary = summary;
-        notifyChanged();
-    }
-
-    @Override
-    public void setSummary(int summaryResId) {
-        super.setSummary(summaryResId);
-        mSummary = getContext().getText(summaryResId);
-        notifyChanged();
-    }
-
-    @Override
-    public CharSequence getSummary() {
-        return mSummary;
-    }
-
     public void setOnSeekBarChangeListener(SeekBar.OnSeekBarChangeListener seekBarChangeListener) {
         mSeekBarChangeListener = seekBarChangeListener;
     }
diff --git a/src/com/android/settings/widget/SeekBarPreference.java b/src/com/android/settings/widget/SeekBarPreference.java
index 9f9bc9f..e4a37e3 100644
--- a/src/com/android/settings/widget/SeekBarPreference.java
+++ b/src/com/android/settings/widget/SeekBarPreference.java
@@ -82,12 +82,7 @@
                 com.android.internal.R.layout.preference_widget_seekbar);
         a.recycle();
 
-        a = context.obtainStyledAttributes(
-                attrs, com.android.internal.R.styleable.Preference, defStyleAttr, defStyleRes);
-        final boolean isSelectable = a.getBoolean(
-                com.android.settings.R.styleable.Preference_android_selectable, false);
-        setSelectable(isSelectable);
-        a.recycle();
+        setSelectable(false);
 
         setLayoutResource(layoutResId);
     }
@@ -175,11 +170,6 @@
     }
 
     @Override
-    public CharSequence getSummary() {
-        return null;
-    }
-
-    @Override
     protected void onSetInitialValue(boolean restoreValue, Object defaultValue) {
         setProgress(restoreValue ? getPersistedInt(mProgress)
                 : (Integer) defaultValue);
