Skip to content

Commit f513914

Browse files
pekingmepaulfthomas
authored andcommitted
[FAB] Fixed wrong elevation per state.
PiperOrigin-RevId: 735468234
1 parent 949b057 commit f513914

File tree

4 files changed

+120
-4
lines changed

4 files changed

+120
-4
lines changed
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<!--
3+
Copyright 2025 The Android Open Source Project
4+
5+
Licensed under the Apache License, Version 2.0 (the "License");
6+
you may not use this file except in compliance with the License.
7+
You may obtain a copy of the License at
8+
9+
http://www.apache.org/licenses/LICENSE-2.0
10+
11+
Unless required by applicable law or agreed to in writing, software
12+
distributed under the License is distributed on an "AS IS" BASIS,
13+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
See the License for the specific language governing permissions and
15+
limitations under the License.
16+
-->
17+
18+
<set xmlns:android="http://schemas.android.com/apk/res/android">
19+
<selector>
20+
21+
<!-- Pressed state -->
22+
<item
23+
android:state_enabled="true"
24+
android:state_pressed="true">
25+
<set>
26+
<objectAnimator
27+
android:duration="@integer/mtrl_btn_anim_duration_ms"
28+
android:propertyName="translationZ"
29+
android:valueTo="@dimen/m3_fab_translation_z_pressed"
30+
android:valueType="floatType"/>
31+
<objectAnimator
32+
android:duration="0"
33+
android:propertyName="elevation"
34+
android:valueTo="@dimen/m3_comp_fab_primary_container_container_elevation"
35+
android:valueType="floatType"/>
36+
</set>
37+
</item>
38+
39+
<!-- Hover state. This is triggered via mouse. -->
40+
<item
41+
android:state_enabled="true"
42+
android:state_hovered="true">
43+
<set>
44+
<objectAnimator
45+
android:duration="@integer/mtrl_btn_anim_duration_ms"
46+
android:propertyName="translationZ"
47+
android:valueTo="@dimen/m3_fab_translation_z_hovered"
48+
android:valueType="floatType"/>
49+
<objectAnimator
50+
android:duration="0"
51+
android:propertyName="elevation"
52+
android:valueTo="@dimen/m3_comp_fab_primary_container_container_elevation"
53+
android:valueType="floatType"/>
54+
</set>
55+
</item>
56+
57+
<!-- Focused state. This is triggered via keyboard. -->
58+
<item
59+
android:state_enabled="true"
60+
android:state_focused="true">
61+
<set>
62+
<objectAnimator
63+
android:duration="@integer/mtrl_btn_anim_duration_ms"
64+
android:propertyName="translationZ"
65+
android:valueTo="@dimen/m3_fab_translation_z_focused"
66+
android:valueType="floatType"/>
67+
<objectAnimator
68+
android:duration="0"
69+
android:propertyName="elevation"
70+
android:valueTo="@dimen/m3_comp_fab_primary_container_container_elevation"
71+
android:valueType="floatType"/>
72+
</set>
73+
</item>
74+
75+
<!-- Base state (enabled, not pressed) -->
76+
<item android:state_enabled="true">
77+
<set>
78+
<objectAnimator
79+
android:duration="@integer/mtrl_btn_anim_duration_ms"
80+
android:propertyName="translationZ"
81+
android:startDelay="@integer/mtrl_btn_anim_delay_ms"
82+
android:valueTo="@dimen/m3_fab_translation_z_base"
83+
android:valueType="floatType"/>
84+
<objectAnimator
85+
android:duration="0"
86+
android:propertyName="elevation"
87+
android:valueTo="@dimen/m3_comp_fab_primary_container_container_elevation"
88+
android:valueType="floatType"/>
89+
</set>
90+
</item>
91+
92+
<!-- Disabled state -->
93+
<item>
94+
<set>
95+
<objectAnimator
96+
android:duration="0"
97+
android:propertyName="translationZ"
98+
android:valueTo="@dimen/m3_fab_disabled_translation_z"
99+
android:valueType="floatType"/>
100+
<objectAnimator
101+
android:duration="0"
102+
android:propertyName="elevation"
103+
android:valueTo="@dimen/m3_fab_disabled_elevation"
104+
android:valueType="floatType"/>
105+
</set>
106+
</item>
107+
108+
</selector>
109+
</set>

lib/java/com/google/android/material/floatingactionbutton/res/values/dimens.xml

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
<dimen name="mtrl_fab_elevation">6dp</dimen>
2828
<dimen name="mtrl_fab_translation_z_hovered_focused">2dp</dimen>
29+
<!-- This will make pressed elevation +6dp (6dp -> 12dp). -->
2930
<dimen name="mtrl_fab_translation_z_pressed">6dp</dimen>
3031
<dimen name="mtrl_fab_min_touch_target">48dp</dimen>
3132

@@ -48,8 +49,14 @@
4849

4950
<dimen name="m3_fab_border_width">0dp</dimen>
5051
<dimen name="m3_fab_corner_size">30%</dimen>
51-
<dimen name="m3_fab_translation_z_hovered_focused">2dp</dimen>
52-
<dimen name="m3_fab_translation_z_pressed">6dp</dimen>
52+
<dimen name="m3_fab_disabled_elevation">0dp</dimen>
53+
<dimen name="m3_fab_disabled_translation_z">0dp</dimen>
54+
<!-- This will make hovered elevation +2dp (level 3 -> level 4). -->
55+
<dimen name="m3_fab_translation_z_hovered">2dp</dimen>
56+
<!-- This will make default/pressed/focused elevation remains at level 3. -->
57+
<dimen name="m3_fab_translation_z_pressed">0dp</dimen>
58+
<dimen name="m3_fab_translation_z_focused">0dp</dimen>
59+
<dimen name="m3_fab_translation_z_base">0dp</dimen>
5360

5461
<dimen name="m3_extended_fab_icon_padding">12dp</dimen>
5562
<dimen name="m3_extended_fab_end_padding">20dp</dimen>

lib/java/com/google/android/material/floatingactionbutton/res/values/fab_tokens.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
<dimen name="m3_comp_fab_primary_container_hovered_container_elevation">@dimen/m3_sys_elevation_level4</dimen>
4444
<dimen name="m3_comp_fab_primary_container_hovered_state_layer_opacity">@dimen/m3_sys_state_hover_state_layer_opacity</dimen>
4545
<!-- Group: Focused -->
46+
<dimen name="m3_comp_fab_primary_container_focused_container_elevation">@dimen/m3_sys_elevation_level3</dimen>
4647
<dimen name="m3_comp_fab_primary_container_focused_state_layer_opacity">@dimen/m3_sys_state_focus_state_layer_opacity</dimen>
4748
<!-- Group: Pressed -->
4849
<dimen name="m3_comp_fab_primary_container_pressed_container_elevation">@dimen/m3_sys_elevation_level3</dimen>

lib/java/com/google/android/material/floatingactionbutton/res/values/styles.xml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,8 @@
101101
<item name="rippleColor">@color/m3_fab_ripple_color_selector</item>
102102
<item name="enforceMaterialTheme">true</item>
103103
<item name="borderWidth">@dimen/m3_fab_border_width</item>
104+
<item name="android:stateListAnimator">@animator/m3_fab_state_list_animator</item>
104105
<item name="elevation">@dimen/m3_comp_fab_primary_container_container_elevation</item>
105-
<item name="hoveredFocusedTranslationZ">@dimen/m3_comp_fab_primary_container_hovered_container_elevation</item>
106-
<item name="pressedTranslationZ">@dimen/m3_comp_fab_primary_container_pressed_container_elevation</item>
107106
<item name="fabCustomSize">@dimen/m3_comp_fab_container_height</item>
108107
<item name="maxImageSize">@dimen/m3_comp_fab_icon_size</item>
109108
<item name="shapeAppearance">@macro/m3_comp_fab_container_shape</item>

0 commit comments

Comments
 (0)