Skip to content

Commit 85c4e0f

Browse files
imhappikendrickumstattd
authored andcommitted
[FloatingToolbar] Floating toolbar should not enforce disappear on scroll behaviour within CoordinatorLayouts
PiperOrigin-RevId: 719361862
1 parent c372436 commit 85c4e0f

File tree

4 files changed

+21
-24
lines changed

4 files changed

+21
-24
lines changed

catalog/java/io/material/catalog/floatingtoolbar/res/layout/cat_floating_toolbar_fragment.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@
9595
android:layout_height="wrap_content"
9696
android:layout_gravity="left|center"
9797
android:layout_margin="16dp"
98+
app:layout_behavior="com.google.android.material.behavior.HideViewOnScrollBehavior"
9899
android:visibility="gone">
99100

100101
<LinearLayout
@@ -114,6 +115,7 @@
114115
android:layout_height="wrap_content"
115116
android:layout_gravity="right|center"
116117
android:layout_margin="16dp"
118+
app:layout_behavior="com.google.android.material.behavior.HideViewOnScrollBehavior"
117119
android:visibility="gone">
118120

119121
<LinearLayout
@@ -133,6 +135,7 @@
133135
android:layout_height="wrap_content"
134136
android:layout_gravity="bottom|center"
135137
style="?attr/floatingToolbarVibrantStyle"
138+
app:layout_behavior="com.google.android.material.behavior.HideViewOnScrollBehavior"
136139
android:layout_margin="16dp">
137140

138141
<LinearLayout

docs/components/FloatingToolBar.md

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,9 @@ Here's what a typical layout would look like:
6767
android:layout_width="wrap_content"
6868
android:layout_height="wrap_content"
6969
android:layout_gravity="bottom|center"
70+
app:layout_behavior="com.google.android.material.behavior.HideViewOnScrollBehavior"
7071
android:layout_margin="16dp">
71-
72+
7273
<!-- floating toolbar sample content -->
7374
<LinearLayout
7475
android:id="@+id/floating_toolbar_child"
@@ -111,10 +112,20 @@ Here's what a typical layout would look like:
111112
A Floating Toolbar is a `FrameLayout` that provides additional styling and functionality.
112113
You may add children to it as you would to a `FrameLayout`.
113114

114-
When inside a `CoordinatorLayout`, a floating toolbar will hide itself on scroll using `CoordinatorLayout.Behavior`.
115+
Floating toolbars can hide on scroll if inside a `CoordinatorLayout` by setting the following `CoordinatorLayout.Behavior` through the `app:layout_behavior` attribute:
116+
117+
```xml
118+
<com.google.android.material.floatingtoolbar.FloatingToolbarLayout
119+
android:id="@+id/floating_toolbar"
120+
android:layout_width="wrap_content"
121+
android:layout_height="wrap_content"
122+
android:layout_gravity="bottom|center"
123+
app:layout_behavior="com.google.android.material.behavior.HideViewOnScrollBehavior">
124+
...
125+
</com.google.android.material.floatingtoolbar.FloatingToolbarLayout>
126+
```
115127

116-
Note that the Material3 style should be explicitly set on the `FloatingToolbarLayout`. See the full list of [styles](https://github.com/material-components/material-components-android/tree/master/lib/java/com/google/android/material/floatingtoolbar/res/values/styles.xml). Otherwise the default horizontal style will be used and `android:layout_gravity` and `android:layout_margin`
117-
will need to be set explicitly.
128+
Note that the default M3 style is the horizontal standard color styling. Vibrant color or vertical styles should be explicitly set on the `FloatingToolbarLayout`. M3 stylings for specific components may also be defined, such as for icon buttons. These are recommended to be set explicitly on the corresponding components inside `FloatingToolbarLayout`. See the full list of [styles](https://github.com/material-components/material-components-android/tree/master/lib/java/com/google/android/material/floatingtoolbar/res/values/styles.xml).
118129

119130
API and source code:
120131

lib/java/com/google/android/material/floatingtoolbar/FloatingToolbarLayout.java

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,9 @@
3535
import androidx.annotation.NonNull;
3636
import androidx.annotation.Nullable;
3737
import androidx.annotation.StyleRes;
38-
import androidx.coordinatorlayout.widget.CoordinatorLayout.AttachedBehavior;
3938
import androidx.core.graphics.Insets;
4039
import androidx.core.view.ViewCompat;
4140
import androidx.core.view.WindowInsetsCompat;
42-
import com.google.android.material.behavior.HideViewOnScrollBehavior;
4341
import com.google.android.material.internal.ThemeEnforcement;
4442
import com.google.android.material.shape.MaterialShapeDrawable;
4543
import com.google.android.material.shape.ShapeAppearanceModel;
@@ -54,11 +52,10 @@
5452
* provides styling for the provided child to give a uniform "floating toolbar" appearance to the
5553
* {@link android.view.ViewGroup}.
5654
*/
57-
public class FloatingToolbarLayout extends FrameLayout implements AttachedBehavior {
55+
public class FloatingToolbarLayout extends FrameLayout {
5856

5957
private static final String TAG = FloatingToolbarLayout.class.getSimpleName();
6058
private static final int DEF_STYLE_RES = R.style.Widget_Material3_FloatingToolbar;
61-
@Nullable private Behavior behavior;
6259

6360
private boolean marginLeftSystemWindowInsets;
6461
private boolean marginTopSystemWindowInsets;
@@ -180,20 +177,4 @@ public WindowInsetsCompat onApplyWindowInsets(
180177

181178
attributes.recycle();
182179
}
183-
184-
@Override
185-
@NonNull
186-
public Behavior getBehavior() {
187-
if (behavior == null) {
188-
behavior = new Behavior();
189-
}
190-
return behavior;
191-
}
192-
193-
/**
194-
* Behavior designed for use with {@link FloatingToolbarLayout} instances. Its main function is to
195-
* hide the {@link FloatingToolbarLayout} view when scrolling. Supports scrolling the floating
196-
* toolbar off of either the right, bottom or left edge of the screen.
197-
*/
198-
public static class Behavior extends HideViewOnScrollBehavior<FloatingToolbarLayout> {}
199180
}

lib/java/com/google/android/material/theme/res/values/themes_base.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -452,6 +452,8 @@
452452
<item name="floatingActionButtonLargeSecondaryStyle">@style/Widget.Material3.FloatingActionButton.Large.Secondary</item>
453453
<item name="floatingActionButtonLargeTertiaryStyle">@style/Widget.Material3.FloatingActionButton.Large.Tertiary</item>
454454
<item name="floatingActionButtonLargeSurfaceStyle">@style/Widget.Material3.FloatingActionButton.Large.Surface</item>
455+
<item name="floatingToolbarStyle">@style/Widget.Material3.FloatingToolbar</item>
456+
<item name="floatingToolbarVibrantStyle">@style/Widget.Material3.FloatingToolbar.Vibrant</item>
455457
<item name="linearProgressIndicatorStyle">@style/Widget.Material3.LinearProgressIndicator</item>
456458
<item name="loadingIndicatorStyle">@style/Widget.Material3.LoadingIndicator</item>
457459
<item name="materialIconButtonStyle">@style/Widget.Material3.Button.IconButton</item>

0 commit comments

Comments
 (0)