diff --git a/res/layout/color_mode_preview.xml b/res/layout/color_mode_preview.xml
new file mode 100644
index 00000000000..bcd385dcc24
--- /dev/null
+++ b/res/layout/color_mode_preview.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 6ede7c644af..bf10008464b 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -60,6 +60,9 @@
200dp
+ 320dp
+ 40dp
+
4dp
0dip
diff --git a/src/com/android/settings/display/ColorModePreferenceFragment.java b/src/com/android/settings/display/ColorModePreferenceFragment.java
index ea8dd6a8ab2..f1bb6e1e996 100644
--- a/src/com/android/settings/display/ColorModePreferenceFragment.java
+++ b/src/com/android/settings/display/ColorModePreferenceFragment.java
@@ -16,10 +16,12 @@ package com.android.settings.display;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.support.annotation.VisibleForTesting;
+import android.support.v7.preference.PreferenceScreen;
import com.android.internal.app.ColorDisplayController;
import com.android.internal.logging.nano.MetricsProto;
+import com.android.settings.applications.LayoutPreference;
import com.android.settings.R;
import com.android.settings.widget.RadioButtonPickerFragment;
import com.android.settingslib.widget.CandidateInfo;
@@ -50,6 +52,19 @@ public class ColorModePreferenceFragment extends RadioButtonPickerFragment {
return R.xml.color_mode_settings;
}
+ @VisibleForTesting
+ void configureAndInstallPreview(LayoutPreference preview, PreferenceScreen screen) {
+ preview.setSelectable(false);
+ screen.addPreference(preview);
+ }
+
+ @Override
+ protected void addStaticPreferences(PreferenceScreen screen) {
+ final LayoutPreference preview = new LayoutPreference(screen.getContext(),
+ R.layout.color_mode_preview);
+ configureAndInstallPreview(preview, screen);
+ }
+
@Override
protected List extends CandidateInfo> getCandidates() {
Context c = getContext();
diff --git a/src/com/android/settings/widget/RadioButtonPickerFragment.java b/src/com/android/settings/widget/RadioButtonPickerFragment.java
index 069d4611892..1465c60d6f3 100644
--- a/src/com/android/settings/widget/RadioButtonPickerFragment.java
+++ b/src/com/android/settings/widget/RadioButtonPickerFragment.java
@@ -101,6 +101,13 @@ public abstract class RadioButtonPickerFragment extends InstrumentedPreferenceFr
return false;
}
+ /**
+ * Populate any static preferences, independent of the radio buttons.
+ * These might be used to provide extra information about the choices.
+ **/
+ protected void addStaticPreferences(PreferenceScreen screen) {
+ }
+
protected CandidateInfo getCandidate(String key) {
return mCandidates.get(key);
}
@@ -134,6 +141,7 @@ public abstract class RadioButtonPickerFragment extends InstrumentedPreferenceFr
final String systemDefaultKey = getSystemDefaultKey();
final PreferenceScreen screen = getPreferenceScreen();
screen.removeAll();
+ addStaticPreferences(screen);
final int customLayoutResId = getRadioButtonPreferenceCustomLayoutResId();
if (shouldShowItemNone()) {
diff --git a/tests/robotests/src/com/android/settings/display/ColorModePreferenceFragmentTest.java b/tests/robotests/src/com/android/settings/display/ColorModePreferenceFragmentTest.java
index 68937b2f1c0..1ed691b2658 100644
--- a/tests/robotests/src/com/android/settings/display/ColorModePreferenceFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/display/ColorModePreferenceFragmentTest.java
@@ -20,13 +20,17 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.os.Bundle;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
import com.android.internal.app.ColorDisplayController;
import com.android.internal.logging.nano.MetricsProto;
+import com.android.settings.applications.LayoutPreference;
import com.android.settings.R;
import com.android.settings.TestConfig;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
@@ -37,6 +41,7 @@ import com.android.settingslib.widget.CandidateInfo;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
@@ -145,4 +150,17 @@ public class ColorModePreferenceFragmentTest {
verify(mFragment).addPreferencesFromResource(R.xml.color_mode_settings);
}
+ @Test
+ public void addStaticPreferences_shouldAddPreviewImage() {
+ PreferenceScreen mockPreferenceScreen = Mockito.mock(PreferenceScreen.class);
+ LayoutPreference mockPreview = Mockito.mock(LayoutPreference.class);
+
+ ArgumentCaptor preferenceCaptor = ArgumentCaptor.forClass(Preference.class);
+
+ mFragment.configureAndInstallPreview(mockPreview, mockPreferenceScreen);
+ Mockito.verify(mockPreview, times(1)).setSelectable(false);
+ Mockito.verify(mockPreferenceScreen, times(1)).addPreference(preferenceCaptor.capture());
+
+ assertThat(preferenceCaptor.getValue()).isEqualTo(mockPreview);
+ }
}