diff options
8 files changed, 76 insertions, 29 deletions
diff --git a/packages/SettingsLib/CollapsingToolbarBaseActivity/res/layout-v31/collapsing_toolbar_base_layout.xml b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/layout-v31/collapsing_toolbar_base_layout.xml index 62dfc51b5b30..579a6b203760 100644 --- a/packages/SettingsLib/CollapsingToolbarBaseActivity/res/layout-v31/collapsing_toolbar_base_layout.xml +++ b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/layout-v31/collapsing_toolbar_base_layout.xml @@ -16,29 +16,39 @@ --> <androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:androidprv="http://schemas.android.com/apk/prv/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/content_parent" android:layout_width="match_parent" - android:layout_height="match_parent"> + android:layout_height="match_parent" + android:fitsSystemWindows="true"> <com.google.android.material.appbar.AppBarLayout android:id="@+id/app_bar" android:layout_width="match_parent" - android:layout_height="180dp" + android:layout_height="wrap_content" + android:fitsSystemWindows="true" + android:outlineAmbientShadowColor="@android:color/transparent" + android:outlineSpotShadowColor="@android:color/transparent" + android:background="@android:color/transparent" android:theme="@style/Theme.CollapsingToolbar.Settings"> <com.android.settingslib.collapsingtoolbar.AdjustableToolbarLayout android:id="@+id/collapsing_toolbar" - android:background="?android:attr/colorPrimary" android:layout_width="match_parent" - android:layout_height="match_parent" + android:layout_height="@dimen/toolbar_one_line_height" + android:clipToPadding="false" + app:contentScrim="?androidprv:attr/colorSurfaceHeader" app:maxLines="3" - app:contentScrim="?android:attr/colorPrimary" + app:layout_scrollFlags="scroll|exitUntilCollapsed|snap" + app:scrimAnimationDuration="50" + app:scrimVisibleHeightTrigger="@dimen/scrim_visible_height_trigger" + app:statusBarScrim="@empty" + app:titleCollapseMode="fade" app:collapsedTitleTextAppearance="@style/CollapsingToolbarTitle.Collapsed" - app:statusBarScrim="?android:attr/colorPrimary" - app:layout_scrollFlags="scroll|exitUntilCollapsed" - app:expandedTitleMarginStart="18dp" - app:expandedTitleMarginEnd="18dp" + app:expandedTitleTextAppearance="@style/CollapsingToolbarTitle.Expanded" + app:expandedTitleMarginStart="@dimen/expanded_title_margin_start" + app:expandedTitleMarginEnd="@dimen/expanded_title_margin_end" app:toolbarId="@id/action_bar"> <Toolbar diff --git a/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-night/themes.xml b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-night/themes.xml index e20775ef45fd..878275a08752 100644 --- a/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-night/themes.xml +++ b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values-night/themes.xml @@ -15,8 +15,9 @@ limitations under the License. --> <resources> - <style name="Theme.CollapsingToolbar.Settings" - parent="@style/Theme.MaterialComponents.DayNight"> + <style name="Theme.CollapsingToolbar.Settings" parent="@style/Theme.MaterialComponents.DayNight"> + <item name="elevationOverlayEnabled">true</item> + <item name="elevationOverlayColor">?attr/colorPrimary</item> <item name="colorPrimary">@*android:color/primary_dark_device_default_settings</item> <item name="colorAccent">@*android:color/accent_device_default_dark</item> </style> diff --git a/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values/dimens.xml b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values/dimens.xml new file mode 100644 index 000000000000..f0cdaf603ba1 --- /dev/null +++ b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values/dimens.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2021 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<resources> + <!-- Collapsing toolbar layout dimensions --> + <dimen name="toolbar_one_line_height">226dp</dimen> + <dimen name="toolbar_two_lines_height">270dp</dimen> + <dimen name="toolbar_three_lines_height">314dp</dimen> + <dimen name="scrim_visible_height_trigger">174dp</dimen> + <dimen name="expanded_title_margin_start">24dp</dimen> + <dimen name="expanded_title_margin_end">24dp</dimen> +</resources>
\ No newline at end of file diff --git a/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values/styles.xml b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values/styles.xml index 1157a346d6ec..2a72a1ad65db 100644 --- a/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values/styles.xml +++ b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values/styles.xml @@ -15,16 +15,11 @@ limitations under the License. --> <resources> - <style name="CollapsingToolbarTitle.Collapsed" - parent="@android:style/TextAppearance.DeviceDefault.Widget.ActionBar.Title"> + <style name="CollapsingToolbarTitle.Collapsed" parent="@android:style/TextAppearance.DeviceDefault.Widget.ActionBar.Title"> <item name="android:fontFamily">@*android:string/config_headlineFontFamily</item> </style> - <style name="CollapsingToolbarTitle" parent="CollapsingToolbarTitle.Collapsed"> - <item name="android:textSize">36sp</item> - </style> - - <style name="CollapsingToolbarTitle.MoreThanTwoLines"> - <item name="android:textSize">24sp</item> + <style name="CollapsingToolbarTitle.Expanded" parent="CollapsingToolbarTitle.Collapsed"> + <item name="android:textSize">36dp</item> </style> </resources>
\ No newline at end of file diff --git a/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values/themes.xml b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values/themes.xml index de545b0711e3..2e7a6a9181fe 100644 --- a/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values/themes.xml +++ b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/values/themes.xml @@ -15,8 +15,9 @@ limitations under the License. --> <resources> - <style name="Theme.CollapsingToolbar.Settings" - parent="@style/Theme.MaterialComponents.DayNight"> + <style name="Theme.CollapsingToolbar.Settings" parent="@style/Theme.MaterialComponents.DayNight"> + <item name="elevationOverlayEnabled">true</item> + <item name="elevationOverlayColor">?attr/colorPrimary</item> <item name="colorPrimary">@*android:color/primary_device_default_settings_light</item> <item name="colorAccent">@*android:color/accent_device_default_light</item> </style> diff --git a/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/AdjustableToolbarLayout.java b/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/AdjustableToolbarLayout.java index e75a97857456..b3053ac76b55 100644 --- a/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/AdjustableToolbarLayout.java +++ b/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/AdjustableToolbarLayout.java @@ -19,6 +19,7 @@ package com.android.settingslib.collapsingtoolbar; import android.content.Context; import android.util.AttributeSet; import android.view.View; +import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -51,17 +52,24 @@ public class AdjustableToolbarLayout extends CollapsingToolbarLayout { initCollapsingToolbar(); } + @SuppressWarnings("RestrictTo") private void initCollapsingToolbar() { this.addOnLayoutChangeListener(new View.OnLayoutChangeListener() { @Override public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { v.removeOnLayoutChangeListener(this); - final int count = getLineCount(); + final int count = getLineCountWithReflection(); if (count > TOOLBAR_MAX_LINE_NUMBER) { - setExpandedTitleTextAppearance(R.style.CollapsingToolbarTitle_MoreThanTwoLines); - } else { - setExpandedTitleTextAppearance(R.style.CollapsingToolbarTitle); + final ViewGroup.LayoutParams lp = getLayoutParams(); + lp.height = getResources() + .getDimensionPixelSize(R.dimen.toolbar_three_lines_height); + setLayoutParams(lp); + } else if (count == TOOLBAR_MAX_LINE_NUMBER) { + final ViewGroup.LayoutParams lp = getLayoutParams(); + lp.height = getResources() + .getDimensionPixelSize(R.dimen.toolbar_two_lines_height); + setLayoutParams(lp); } } }); @@ -73,9 +81,10 @@ public class AdjustableToolbarLayout extends CollapsingToolbarLayout { * drawn in a canvas and the text process is wrapped in a CollapsingTextHelper, the way we used * here is to get the line count from the CollapsingTextHelper via Java Reflection. */ - private int getLineCount() { + private int getLineCountWithReflection() { try { - final Field textHelperField = this.getClass().getDeclaredField("collapsingTextHelper"); + final Field textHelperField = + this.getClass().getSuperclass().getDeclaredField("collapsingTextHelper"); textHelperField.setAccessible(true); final Object textHelperObj = textHelperField.get(this); diff --git a/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/CollapsingToolbarBaseActivity.java b/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/CollapsingToolbarBaseActivity.java index b29205d3bce2..f5641bd84619 100644 --- a/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/CollapsingToolbarBaseActivity.java +++ b/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/CollapsingToolbarBaseActivity.java @@ -78,16 +78,18 @@ public class CollapsingToolbarBaseActivity extends SettingsTransitionActivity { public void setTitle(CharSequence title) { if (mCollapsingToolbarLayout != null) { mCollapsingToolbarLayout.setTitle(title); + } else { + super.setTitle(title); } - super.setTitle(title); } @Override public void setTitle(int titleId) { if (mCollapsingToolbarLayout != null) { mCollapsingToolbarLayout.setTitle(getText(titleId)); + } else { + super.setTitle(titleId); } - super.setTitle(titleId); } @Override diff --git a/packages/SettingsLib/SettingsTheme/res/values/themes.xml b/packages/SettingsLib/SettingsTheme/res/values/themes.xml index 9c096d28c5c8..771fbc2e0b1f 100644 --- a/packages/SettingsLib/SettingsTheme/res/values/themes.xml +++ b/packages/SettingsLib/SettingsTheme/res/values/themes.xml @@ -26,7 +26,11 @@ <!-- Using in SubSettings page including injected settings page --> <style name="Theme.SubSettingsBase" parent="Theme.SettingsBase"> + <!-- Suppress the built-in action bar --> <item name="android:windowActionBar">false</item> <item name="android:windowNoTitle">true</item> + <!-- Set up edge-to-edge configuration for top app bar --> + <item name="android:navigationBarColor">@android:color/transparent</item> + <item name="android:statusBarColor">@android:color/transparent</item> </style> </resources>
\ No newline at end of file |