Android中FAB与BottomAppBar位置调整及展开菜单背景实现咨询
解决方案
FAB底部栏内居中调整
修改布局中三处配置即可实现:
- 给
BottomAppBar设置固定高度,替换原来的wrap_content,避免高度浮动影响对齐,示例(可按需调整数值):
android:layout_height="56dp"
- 修改
BottomAppBar的app:fabCradleVerticalOffset属性,默认值0会让FAB中心和底部栏顶部对齐,你可以调整为10-14dp(根据你的FAB实际大小微调),示例:
app:fabCradleVerticalOffset="12dp"
- 确认主FAB的锚点重力属性为
center即可,你当前的配置是对的,配合上面两个修改就能实现FAB在底部栏内部垂直居中。
展开菜单统一连通背景实现
推荐用自定义父布局的方案,比原生多FAB锚定的效果更可控:
- 新增一个垂直方向的
LinearLayout作为三个FAB的共同父容器,按从下到上的顺序把主FAB、视频FAB、上传FAB放到这个布局里,设置合适的上下间距 - 给这个LinearLayout设置自定义圆角矩形背景,填充色和FAB背景色保持一致,圆角大小匹配FAB的圆角,同时给父布局设置合适的elevation实现阴影效果
- 移除三个FAB原本的锚点相关属性,把这个父LinearLayout的锚点设为
@id/bottomAppBar,锚点重力调整为你需要的位置 - 给三个FAB设置
app:elevation="0dp",让阴影完全由父布局实现,整体感更强 - 点击主FAB时,给父LinearLayout加属性动画实现展开收起:展开时做从下往上的位移动画+透明度渐变,收起时反向做动画即可;也可以直接用
TransitionManager.beginDelayedTransition后修改父布局的visibility,系统会自动生成过渡动画。这样三个按钮就共用同一块背景,看起来是连通的整体。
内容的提问来源于stack exchange,提问作者Seb
相关产品推荐
相关产品推荐

