透明的白色按钮在 Android Material 设计中看起来很糟糕

Transparent white button looks bad in Android Material Design

考虑这 2 个屏幕截图。我定义了左侧、顶部和右下角的元素:

left/top 屏幕截图的所有元素都使用纯白色 (#FFFFFF),而 bottom/right 屏幕截图增加了一点透明度 (#D0FFFFFF)。 我的问题是我的元素透明时看起来很丑陋。例如,FAB(右下角)无缘无故包含一个较小的不透明圆圈。

我的所有元素的高度都是 6(因为这是 FAB 默认高度)。任何大于 2 的高度都会清楚地看到这个问题,而任何低于 2 的东西都不会投射足够的阴影让我看起来可以接受。

地图定义的元素(右上角)似乎完全不受此影响!它有什么不同之处?明明是像我一样使用透明度,还投射对应海拔高度2或以上的阴影。

使用的代码基本上是这样的:

fab = FloatingActionButton(this.context!!)
fab.backgroundTintList = ColorStateList.valueOf(Color.parseColor("#d0ffffff"))
fab.compatElevation = 6F

For example the FAB (bottom-right) contains a smaller opaque circle for no reason.

稍后... fab.compatElevation = 6F

你看到的圆圈是FAB的阴影,由高程产生。 如果你想去除阴影但保持高程,请执行:

fab.outlineProvider = null

如果你想同时保留高度和阴影,你必须制作一个自定义的 outlineProvider(可能是香蕉形状的)。