diff --git a/res/values/styles_preference_expressive.xml b/res/values/styles_preference_expressive.xml
new file mode 100644
index 00000000000..a6fe2f18068
--- /dev/null
+++ b/res/values/styles_preference_expressive.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
diff --git a/res/values/themes_expressive.xml b/res/values/themes_expressive.xml
new file mode 100644
index 00000000000..8342fe0c9e0
--- /dev/null
+++ b/res/values/themes_expressive.xml
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index a79ba8073ac..cc6bafb2562 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -73,6 +73,7 @@ import com.android.settings.widget.SettingsMainSwitchBar;
import com.android.settingslib.core.instrumentation.Instrumentable;
import com.android.settingslib.core.instrumentation.SharedPreferencesLogger;
import com.android.settingslib.drawer.DashboardCategory;
+import com.android.settingslib.widget.SettingsThemeHelper;
import com.google.android.setupcompat.util.WizardManagerHelper;
@@ -169,6 +170,9 @@ public class SettingsActivity extends SettingsBaseActivity
private static final String EXTRA_UI_OPTIONS = "settings:ui_options";
+ private static final int EXPRESSIVE_BACK_ICON =
+ com.android.settingslib.collapsingtoolbar.R.drawable.settingslib_expressive_icon_back;
+
private String mFragmentClass;
private String mHighlightMenuKey;
@@ -301,7 +305,9 @@ public class SettingsActivity extends SettingsBaseActivity
// If this is in setup flow, don't apply theme. Because light theme needs to be applied
// in SettingsBaseActivity#onCreate().
if (isSubSettings(intent) && !WizardManagerHelper.isAnySetupWizard(getIntent())) {
- setTheme(R.style.Theme_SubSettings);
+ int themeId = SettingsThemeHelper.isExpressiveTheme(this)
+ ? R.style.Theme_SubSettings_Expressive : R.style.Theme_SubSettings;
+ setTheme(themeId);
}
setContentView(R.layout.settings_main_prefs);
@@ -388,6 +394,9 @@ public class SettingsActivity extends SettingsBaseActivity
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(isActionBarButtonEnabled);
actionBar.setHomeButtonEnabled(isActionBarButtonEnabled);
+ if (SettingsThemeHelper.isExpressiveTheme(this)) {
+ actionBar.setHomeAsUpIndicator(EXPRESSIVE_BACK_ICON);
+ }
actionBar.setDisplayShowTitleEnabled(true);
}
}
diff --git a/src/com/android/settings/core/SettingsBaseActivity.java b/src/com/android/settings/core/SettingsBaseActivity.java
index c9530aba850..491ca5cce93 100644
--- a/src/com/android/settings/core/SettingsBaseActivity.java
+++ b/src/com/android/settings/core/SettingsBaseActivity.java
@@ -46,6 +46,7 @@ import com.android.settings.Utils;
import com.android.settings.core.CategoryMixin.CategoryHandler;
import com.android.settingslib.core.lifecycle.HideNonSystemOverlayMixin;
import com.android.settingslib.transition.SettingsTransitionHelper.TransitionType;
+import com.android.settingslib.widget.SettingsThemeHelper;
import com.android.window.flags.Flags;
import com.google.android.material.appbar.AppBarLayout;
@@ -68,6 +69,12 @@ public class SettingsBaseActivity extends FragmentActivity implements CategoryHa
private static final int DEFAULT_REQUEST = -1;
private static final float TOOLBAR_LINE_SPACING_MULTIPLIER = 1.1f;
+ private static final int EXPRESSIVE_LAYOUT_ID =
+ com.android.settingslib.collapsingtoolbar.R.layout.settingslib_expressive_collapsing_toolbar_base_layout;
+ private static final int COLLAPSING_LAYOUT_ID =
+ com.android.settingslib.collapsingtoolbar.R.layout.collapsing_toolbar_base_layout;
+
+
protected CategoryMixin mCategoryMixin;
protected CollapsingToolbarLayout mCollapsingToolbarLayout;
protected AppBarLayout mAppBarLayout;
@@ -116,8 +123,9 @@ public class SettingsBaseActivity extends FragmentActivity implements CategoryHa
}
if (isToolbarEnabled() && !isAnySetupWizard) {
- super.setContentView(
- com.android.settingslib.collapsingtoolbar.R.layout.collapsing_toolbar_base_layout);
+ int resId = SettingsThemeHelper.isExpressiveTheme(getApplicationContext())
+ ? EXPRESSIVE_LAYOUT_ID : COLLAPSING_LAYOUT_ID;
+ super.setContentView(resId);
mCollapsingToolbarLayout =
findViewById(com.android.settingslib.collapsingtoolbar.R.id.collapsing_toolbar);
mAppBarLayout = findViewById(R.id.app_bar);