diff --git a/src/com/android/settings/fuelgauge/batterytip/tips/BatteryTip.java b/src/com/android/settings/fuelgauge/batterytip/tips/BatteryTip.java
index 55bb9b2..0867a01 100644
--- a/src/com/android/settings/fuelgauge/batterytip/tips/BatteryTip.java
+++ b/src/com/android/settings/fuelgauge/batterytip/tips/BatteryTip.java
@@ -16,14 +16,13 @@
 
 package com.android.settings.fuelgauge.batterytip.tips;
 
-import android.annotation.Nullable;
 import android.content.Context;
 import android.content.res.ColorStateList;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.util.SparseIntArray;
+import android.view.View;
 
-import androidx.annotation.ColorInt;
 import androidx.annotation.IdRes;
 import androidx.annotation.IntDef;
 import androidx.annotation.VisibleForTesting;
@@ -154,15 +153,15 @@
         preference.setTitle(getTitle(context));
         preference.setSummary(getSummary(context));
         preference.setIcon(getIconId());
-        ColorStateList tint = getIconTint();
-        if (tint != null) {
-            preference.getIcon().setTintList(tint);
+        @IdRes int iconTintColorId = getIconTintColorId();
+        if (iconTintColorId != View.NO_ID) {
+            preference.getIcon().setTint(context.getColor(iconTintColorId));
         }
     }
 
-    /** Returns the {@link ColorStateList} for tinting {@link #getIconId()} or null if none. */
-    protected @Nullable ColorStateList getIconTint() {
-        return null;
+    /** Returns the color resid for tinting {@link #getIconId()} or {@link View#NO_ID} if none. */
+    protected @IdRes int getIconTintColorId() {
+        return View.NO_ID;
     }
 
     public boolean shouldShowDialog() {
diff --git a/src/com/android/settings/fuelgauge/batterytip/tips/EarlyWarningTip.java b/src/com/android/settings/fuelgauge/batterytip/tips/EarlyWarningTip.java
index fe06507..0c2bb03 100644
--- a/src/com/android/settings/fuelgauge/batterytip/tips/EarlyWarningTip.java
+++ b/src/com/android/settings/fuelgauge/batterytip/tips/EarlyWarningTip.java
@@ -64,10 +64,10 @@
     }
 
     @Override
-    public ColorStateList getIconTint() {
-        return ColorStateList.valueOf(mState == StateType.HANDLED
+    public int getIconTintColorId() {
+        return mState == StateType.HANDLED
                 ? R.color.battery_maybe_color_light
-                : R.color.battery_bad_color_light);
+                : R.color.battery_bad_color_light;
     }
 
     @Override
diff --git a/src/com/android/settings/fuelgauge/batterytip/tips/SummaryTip.java b/src/com/android/settings/fuelgauge/batterytip/tips/SummaryTip.java
index c21df2c..37122d8 100644
--- a/src/com/android/settings/fuelgauge/batterytip/tips/SummaryTip.java
+++ b/src/com/android/settings/fuelgauge/batterytip/tips/SummaryTip.java
@@ -60,8 +60,8 @@
     }
 
     @Override
-    public ColorStateList getIconTint() {
-        return ColorStateList.valueOf(R.color.battery_good_color_light);
+    public int getIconTintColorId() {
+        return R.color.battery_good_color_light;
     }
 
     @Override
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/EarlyWarningTipTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/EarlyWarningTipTest.java
index 7a447d9..85b00c8 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/EarlyWarningTipTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/EarlyWarningTipTest.java
@@ -70,6 +70,7 @@
         assertThat(tip.getTitle(mContext)).isEqualTo("Turn on Battery Saver");
         assertThat(tip.getSummary(mContext)).isEqualTo("Battery may run out earlier than usual");
         assertThat(tip.getIconId()).isEqualTo(R.drawable.ic_battery_status_bad_24dp);
+        assertThat(tip.getIconTintColorId()).isEqualTo(R.color.battery_bad_color_light);
     }
 
     @Test
@@ -80,6 +81,7 @@
         assertThat(tip.getTitle(mContext)).isEqualTo("Battery Saver is on");
         assertThat(tip.getSummary(mContext)).isEqualTo("Some features may be limited");
         assertThat(tip.getIconId()).isEqualTo(R.drawable.ic_battery_status_maybe_24dp);
+        assertThat(tip.getIconTintColorId()).isEqualTo(R.color.battery_maybe_color_light);
     }
 
     @Test
