From f2423de558f727316f290b7f3b4a0ae4a4f6e855 Mon Sep 17 00:00:00 2001 From: rightnao Date: Fri, 24 Jun 2022 20:36:40 +0000 Subject: [PATCH] [BottomAppBar] Add attribute to remove embedded FAB elevation PiperOrigin-RevId: 457084450 --- docs/components/BottomAppBar.md | 1 + .../android/material/bottomappbar/BottomAppBar.java | 10 +++++++++- .../material/bottomappbar/res-public/values/public.xml | 1 + .../android/material/bottomappbar/res/values/attrs.xml | 2 ++ .../material/bottomappbar/res/values/styles.xml | 1 - 5 files changed, 13 insertions(+), 2 deletions(-) diff --git a/docs/components/BottomAppBar.md b/docs/components/BottomAppBar.md index ecfba64c238..4cd6871f3e1 100644 --- a/docs/components/BottomAppBar.md +++ b/docs/components/BottomAppBar.md @@ -239,6 +239,7 @@ Element | Attribute | Related **Cradle rounded corner radius** | `app:fabCradleRoundedCornerRadius` | `setFabCradleRoundedCornerRadius`
`getFabCradleRoundedCornerRadius` | `4dp` **Cradle vertical offset** | `app:fabCradleVerticalOffset` | `setCradleVerticalOffset`
`getCradleVerticalOffset` | `12dp` **End margin** | `app:fabAlignmentModeEndMargin` | `setFabAlignmentModeEndMargin`
`getFabAlignmentModeEndMargin` | N/A +**Embedded elevation** | `app:removeEmbeddedFabElevation` | N/A | `true` See the [FAB documentation](https://github.com/material-components/material-components-android/tree/master/docs/components/FloatingActionButton.md) diff --git a/lib/java/com/google/android/material/bottomappbar/BottomAppBar.java b/lib/java/com/google/android/material/bottomappbar/BottomAppBar.java index c8d0e3d3652..192237a53c3 100644 --- a/lib/java/com/google/android/material/bottomappbar/BottomAppBar.java +++ b/lib/java/com/google/android/material/bottomappbar/BottomAppBar.java @@ -184,7 +184,6 @@ public class BottomAppBar extends Toolbar implements AttachedBehavior { @Nullable private Animator modeAnimator; @Nullable private Animator menuAnimator; - @MenuAlignmentMode private int menuAlignmentMode; @FabAlignmentMode private int fabAlignmentMode; @FabAnimationMode private int fabAnimationMode; @FabAnchorMode private int fabAnchorMode; @@ -195,6 +194,8 @@ public class BottomAppBar extends Toolbar implements AttachedBehavior { private final int fabOffsetEndMode; @Px private int fabAlignmentModeEndMargin; + @MenuAlignmentMode private int menuAlignmentMode; + private final boolean removeEmbeddedFabElevation; private boolean hideOnScroll; private final boolean paddingBottomSystemWindowInsets; private final boolean paddingLeftSystemWindowInsets; @@ -324,6 +325,9 @@ public BottomAppBar(@NonNull Context context, @Nullable AttributeSet attrs, int fabAnimationMode = a.getInt(R.styleable.BottomAppBar_fabAnimationMode, FAB_ANIMATION_MODE_SCALE); fabAnchorMode = a.getInt(R.styleable.BottomAppBar_fabAnchorMode, FAB_ANCHOR_MODE_CRADLE); + removeEmbeddedFabElevation = + a.getBoolean(R.styleable.BottomAppBar_removeEmbeddedFabElevation, true); + menuAlignmentMode = a.getInt(R.styleable.BottomAppBar_menuAlignmentMode, MENU_ALIGNMENT_MODE_AUTO); hideOnScroll = a.getBoolean(R.styleable.BottomAppBar_hideOnScroll, false); @@ -1375,6 +1379,10 @@ public boolean onLayoutChild( if (dependentView instanceof FloatingActionButton) { FloatingActionButton fab = ((FloatingActionButton) dependentView); + if (child.fabAnchorMode == FAB_ANCHOR_MODE_EMBED && child.removeEmbeddedFabElevation) { + ViewCompat.setElevation(fab, 0); + fab.setCompatElevation(0); + } // TODO (b/185233196): Update to use FABs default animator with motion theming. // If there is no motion spec set on the anchored fab, set one which scales the fab to diff --git a/lib/java/com/google/android/material/bottomappbar/res-public/values/public.xml b/lib/java/com/google/android/material/bottomappbar/res-public/values/public.xml index 978dd3bb515..4123e604f31 100644 --- a/lib/java/com/google/android/material/bottomappbar/res-public/values/public.xml +++ b/lib/java/com/google/android/material/bottomappbar/res-public/values/public.xml @@ -25,6 +25,7 @@ + diff --git a/lib/java/com/google/android/material/bottomappbar/res/values/attrs.xml b/lib/java/com/google/android/material/bottomappbar/res/values/attrs.xml index 5a180248ab8..a72c2a6a8bf 100644 --- a/lib/java/com/google/android/material/bottomappbar/res/values/attrs.xml +++ b/lib/java/com/google/android/material/bottomappbar/res/values/attrs.xml @@ -52,6 +52,8 @@ + + diff --git a/lib/java/com/google/android/material/bottomappbar/res/values/styles.xml b/lib/java/com/google/android/material/bottomappbar/res/values/styles.xml index 58a9f5925c4..920585832b6 100644 --- a/lib/java/com/google/android/material/bottomappbar/res/values/styles.xml +++ b/lib/java/com/google/android/material/bottomappbar/res/values/styles.xml @@ -61,7 +61,6 @@ @dimen/m3_bottomappbar_fab_cradle_vertical_offset - @dimen/m3_sys_elevation_level2 ?attr/colorSurface