移除高程阴影而不移除高程本身

Remove elevation shadow without removing elevation itself

有没有办法让 AppBarLayout 没有阴影并保持高度?

<android.support.design.widget.AppBarLayout
        app:elevation="0dp">

我刚刚 运行 遇到了同样的问题,这就是为我解决的问题:

val withElevationNoShadow = view.findViewById<*your view type*>(*your view id*)
withElevationNoShadow.outlineProvider = null

请记住,上面的代码是 Kotlin,但 Java 几乎相同。

之所以有效,是因为阴影是由 ViewOutlineProvider 绘制的。通过将视图的 ViewOutlineProvider 设置为 null,您可以移除默认阴影。

有关 ViewOutlineProvider 的更多信息,请查看

https://developer.android.com/reference/android/view/ViewOutlineProvider

https://developer.android.com/training/material/shadows-clipping

要完成 M.Sandholtz 答案,您还可以在 XML 中定义它,使用 outlineProvider="none".

<View
    android:id="@+id/viewElevationNoShadow"
    android:outlineProvider="none"
    android:elevation="4dp"/>